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 相关文章推荐
jquery获得下拉框值的代码
Aug 13 Javascript
jquery 获取标签名(tagName)示例代码
Jul 11 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
Dec 10 Javascript
JS对象转换为Jquery对象示例
Jan 26 Javascript
jQuery实现移动 和 渐变特效的点击事件
Feb 26 Javascript
使用AngularJS实现可伸缩的页面切换的方法
Jun 19 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
javascript cookie基础应用之记录用户名的方法
Sep 20 Javascript
关于微信上网页图片点击全屏放大效果
Dec 19 Javascript
解读ES6中class关键字
Nov 20 Javascript
vue-cli webpack配置文件分析
May 20 Javascript
vue.js实现简单的计算器功能
Feb 22 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+javascript实现二级级联菜单的制作
2008/05/06 PHP
PHP的异常处理类Exception的使用及说明
2012/06/13 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
Python导入oracle数据的方法
2015/07/10 Python
Python简单连接MongoDB数据库的方法
2016/03/15 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
pandas 空数据处理方法详解
2019/11/02 Python
电厂厂长岗位职责
2014/01/02 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
岗位职责说明书模板
2014/07/30 职场文书
学生检讨书怎么写
2014/10/09 职场文书
商家认证委托书格式
2014/10/16 职场文书
基层党组织整改方案
2014/10/25 职场文书
本科毕业论文致谢词
2015/05/14 职场文书