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 相关文章推荐
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
Apr 20 Javascript
javascript实现的网页局布刷新效果
Dec 01 Javascript
Javascript 类与静态类的实现(续)
Apr 02 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
Apr 12 Javascript
onclick与listeners的执行先后问题详细解剖
Jan 07 Javascript
js生成随机数之random函数随机示例
Dec 20 Javascript
JavaScript获取flash对象与网上的有所不同
Apr 21 Javascript
js模拟淘宝网的多级选择菜单实现方法
Aug 18 Javascript
socket.io实现在线群聊功能
Apr 07 Javascript
简单实现jQuery弹窗效果
Oct 30 jQuery
vue更改数组中的值实例代码详解
Feb 07 Javascript
JS中的变量作用域(console版)
Jul 18 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
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
升国旗仪式主持词
2014/03/19 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
禁毒宣传标语
2014/06/19 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
员工安全责任书范本
2014/07/24 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
春节晚会开场白
2015/05/29 职场文书
Vue的生命周期一起来看看
2022/02/24 Vue.js
Nginx配置根据url参数重定向
2022/04/11 Servers
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js