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 相关文章推荐
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
Mar 04 Javascript
使用Grunt.js管理你项目的应用说明
Apr 24 Javascript
php与js的区别是什么
Aug 05 Javascript
Jquery的each里用return true或false代替break或continue
May 21 Javascript
jQuery使用之设置元素样式用法实例
Jan 19 Javascript
nw.js实现类似微信的聊天软件
Mar 16 Javascript
jQuery+CSS实现简单切换菜单示例
Jul 27 Javascript
JS一个简单的注册页面实例
Sep 05 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
Jun 28 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
Dec 19 Javascript
Vue渲染过程浅析
Mar 14 Javascript
原生JS使用Canvas实现拖拽式绘图功能
Jun 05 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中使用XML
2006/10/09 PHP
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
php在线代理转向代码
2012/05/05 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
JavaScript 学习初步 入门教程
2010/03/25 Javascript
IE下js调试工具Companion.JS
2010/10/15 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
微信小程序tab切换可滑动切换导航栏跟随滚动实现代码
2019/09/04 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
Python图算法实例分析
2016/08/13 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
python可视化实现KNN算法
2019/10/16 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
python爬虫可以爬什么
2020/06/16 Python
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
业务员岗位职责
2013/11/16 职场文书
环保倡议书400字
2014/05/15 职场文书
2014年创卫工作总结
2014/11/24 职场文书
幼儿园园长六一致辞
2015/07/31 职场文书