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 相关文章推荐
修复IE9&safari 的sort方法
Oct 21 Javascript
jquery如何把参数列严格转换成数组实现思路
Apr 01 Javascript
修改file按钮的默认样式实现代码
Apr 23 Javascript
JS过滤url参数特殊字符的实现方法
Dec 24 Javascript
ES6中箭头函数的定义与调用方式详解
Jun 02 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
Jun 13 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
Jul 31 Javascript
javascript trie前缀树的示例
Jan 29 Javascript
vue+vuex+axios实现登录、注册页权限拦截
Mar 09 Javascript
JavaScript动态加载重复绑定问题
Apr 01 Javascript
webpack4 处理CSS的方法示例
Sep 03 Javascript
记录一次开发微信网页分享的步骤
May 07 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
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
php文件上传 你真的掌握了吗
2016/11/28 PHP
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JavaScript中的toLocaleDateString()方法使用简介
2015/06/12 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
Python实现壁纸下载与轮换
2020/10/19 Python
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
Why do we need Unit test
2013/01/03 面试题
思想汇报范文
2013/11/04 职场文书
会计实习自我鉴定
2013/12/04 职场文书
最美家庭活动方案
2014/08/31 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
小学班主任工作随笔
2015/08/15 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL