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 相关文章推荐
解决 firefox 不支持 document.all的方法
Mar 12 Javascript
在Z-Blog中运行代码[html][/html](纯JS版)
Mar 25 Javascript
jquery通过a标签删除table中的一行的代码
Dec 02 Javascript
javascript中Object使用详解
Jan 26 Javascript
Javascript数组操作函数总结
Feb 05 Javascript
jquery插件EasyUI中form表单提交实例分享
Jan 11 Javascript
jquery按回车键实现表单提交的简单实例
May 25 Javascript
遍历js中对象的属性和值的实例
Nov 21 Javascript
浅析Node.js:DNS模块的使用
Nov 23 Javascript
jQuery zTree树插件动态加载实例代码
May 11 jQuery
vue-cli中的babel配置文件.babelrc实例详解
Feb 22 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
Jun 28 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调用Twitter的RSS的实现代码
2010/03/10 PHP
PHP实现的简单日历类
2014/11/29 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
javascript引用对象的方法
2007/01/11 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
2015/12/04 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
Node接收电子邮件的实例代码
2017/07/21 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
微信跳一跳自动运行python脚本
2018/01/08 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
python的中异常处理机制
2018/08/30 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
Exception类的常用方法
2012/06/16 面试题
2013年入党人员的自我鉴定
2013/10/25 职场文书
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
高三学生评语大全
2014/04/25 职场文书
2014大学生批评与自我批评思想汇报
2014/09/21 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python
python的html标准库
2022/04/29 Python