JS获取本地地址及天气的方法实例小结


Posted in Javascript onMay 10, 2019

本文实例讲述了JS获取本地地址及天气的方法。分享给大家供大家参考,具体如下:

一、获取本地的地址

第一种方式:

1、利用浏览器获取当前位置的经纬度

window.onload=getCurrentPosition;
//浏览器获取当前位置
function getCurrentPosition() {
  if (window.navigator.geolocation) {
    var options = {
      enableHighAccuracy: true,
    };
    window.navigator.geolocation.getCurrentPosition(handleSuccess, handleError, options);
  }else {
    alert("浏览器不支持html5来获取地理位置信息");
  }
}

2、浏览器获取到的是GPS坐标,需要转换成城市名称再通过城市获取天气:

//成功获取时调用的函数
function handleSuccess(position) {
  // 获取到当前位置经纬度 本例中获取到的是gps坐标系
  //经度
  var lng = position.coords.longitude;
  //纬度
  var lat = position.coords.latitude;
  //转换成百度坐标系
  //将请求发送给‘
  var ggPoint = new BMap.Point(lng, lat);
  //地图初始化
  var bm = new BMap.Map();
  //坐标转换完之后的回调函数
  translateCallback = function (data) {
    if (data.status === 0) {//回调成功
      var marker = new BMap.Marker(data.points[0]);
      var myGeo = new BMap.Geocoder();
      var baiduPoint = new BMap.Point(data.points[0].lng, data.points[0].lat);
      //将经纬度转换成城市
      myGeo.getLocation(baiduPoint, getCityByCoordinate);
    }
  }
  setTimeout(function () {
    var convertor = new BMap.Convertor();
    var pointArr = [];
    pointArr.push(ggPoint);
    convertor.translate(pointArr, 3, 5, translateCallback)
  }, 2000);
}
function getCityByCoordinate(result) {
  var gpsAadress=result.addressComponents;
  var city=gpsAadress.city;
  //将转换之后的城市传入获取天气的函数做参数
  getWeatherDatas(city);
  return city;
}
function handleError() {
  log('地点定位出错');
}

第二种方式:

1、利用百度API通过IP地址获取本地地址

//通过百度的 IP地址获取本地地址
window.onload=getCurrentPosit;
  function getCurrentPosit() {
    var map = new BMap.Map('getCity');
    function myFun(result){
      var cityName = result.name;
      getWeatherDatasFun(cityName);
      map.setCenter(cityName);
      alert("当前定位城市:"+cityName);
    }
    var myCity = new BMap.LocalCity();
    myCity.get(myFun);

2、通过城市获取天气数据:

function getWeatherDatas(city) {
  var url='http://route.showapi.com/9-2?';
  if(city===undefined || city===""){
    log('您还未输入')
  }else {
    $.ajax({
      type: 'post',
      url: url,
      dataType: 'jsonp',
      data: {
        "showapi_timestamp": new Date().getTime(),
        "showapi_appid": '44277', //这里需要改成自己的appid
        "showapi_sign": '9987d6dff19e482488b33dc8ed70f6e9', //这里需要改成自己的应用的密钥secret,
        "area":city
      },
      jsonp: 'jsonpcallback', //这个方法名很重要,不能改变
      error: function(XmlHttpRequest, textStatus, errorThrown) {
        log("操作失败,请重试!"+errorThrown);
      },
      success: function(result) {
        //解析获取到的天气数据
        console.log('The Weather datas: ',result);
      }
    });
  }
}

更多关于JavaScript相关内容还可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript操作DOM技巧总结》及《JavaScript字符与字符串操作技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
基于jquery实现的类似百度搜索的输入框自动完成功能
Aug 23 Javascript
js加强的经典分页实例
Mar 15 Javascript
js实现简单的星级选择器提交效果适用于评论等
Oct 18 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
Aug 27 Javascript
jquery中checkbox使用方法简单实例演示
Nov 24 Javascript
第一章之初识Bootstrap
Apr 25 Javascript
详谈$.data()的用法和作用
Feb 13 Javascript
基于vue的fullpage.js单页滚动插件
Mar 20 Javascript
理解javascript async的用法
Aug 22 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
Nov 03 Javascript
mui框架 页面无法滚动的解决方法(推荐)
Jan 25 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
Nov 14 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
May 10 #Javascript
vue无限轮播插件代码实例
May 10 #Javascript
js中的深浅拷贝问题简析
May 10 #Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
May 10 #Javascript
详解jQuery如何实现模糊搜索
May 10 #jQuery
JS匿名函数内部this指向问题详析
May 10 #Javascript
详解关于React-Router4.0跳转不置顶解决方案
May 10 #Javascript
You might like
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
2017/09/12 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
[01:06:39]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第三局
2016/03/02 DOTA
构建Python包的五个简单准则简介
2015/06/15 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
通过实例解析Python调用json模块
2019/12/11 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
html5使用canvas画三角形
2014/12/15 HTML / CSS
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
运动会表扬稿大全
2014/01/16 职场文书
先进集体获奖感言
2014/02/13 职场文书
网络宣传方案
2014/03/15 职场文书
产品发布会策划方案
2014/05/12 职场文书
总结会主持词
2015/07/02 职场文书
家电创业计划书
2019/08/05 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis
详解在OpenCV中如何使用图像像素
2022/03/03 Python
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android