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 相关文章推荐
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
Oct 17 Javascript
让网页跳转到指定位置的jquery代码非书签
Sep 06 Javascript
js 跳出页面的frameset框架示例介绍
Dec 23 Javascript
js点击出现悬浮窗效果不使用JQuery插件
Jan 20 Javascript
javascript向后台传送相同属性的参数即数组参数
Feb 17 Javascript
js自动查找select下拉的菜单并选择(示例代码)
Feb 26 Javascript
Jqgrid之强大的表格插件应用
Dec 02 Javascript
理解javascript中的MVC模式
Jan 28 Javascript
JS实现的自动打字效果示例
Mar 10 Javascript
axios 封装上传文件的请求方法
Sep 26 Javascript
JavaScript实现动态留言板
Mar 16 Javascript
Vue中的this.$options.data()和this.$data用法说明
Jul 26 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加密解密函数代码
2013/06/19 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
php动态生成缩略图并输出显示的方法
2015/04/20 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
PHP count()函数讲解
2019/02/03 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
javascript基本语法分析说明
2008/06/15 Javascript
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
JS检测图片大小的实例
2013/08/21 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
EsLint入门学习教程
2017/02/17 Javascript
vue axios用法教程详解
2017/07/23 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
VUE预渲染及遇到的坑
2018/09/03 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
layui下拉列表select实现可输入查找的方法
2019/09/28 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
浅谈Python中的继承
2020/06/19 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
如何利用python 读取配置文件
2021/01/06 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
西班牙手机之家:Phone House
2018/10/18 全球购物
教师岗位聘任书范文
2014/03/29 职场文书
购房协议书范本
2014/04/11 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
写得不错的求职信范文
2014/07/11 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python