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 获得服务器控件值的方法小结
May 11 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
Dec 12 Javascript
js window.open弹出新的网页窗口
Jan 16 Javascript
SeaJS入门教程系列之完整示例(三)
Mar 03 Javascript
js两种拼接字符串的简单方法(必看)
Sep 02 Javascript
JS访问DOM节点方法详解
Nov 29 Javascript
从零学习node.js之mysql数据库的操作(五)
Feb 24 Javascript
vue组件 $children,$refs,$parent的使用详解
Jul 31 Javascript
Vue工程模板文件 webpack打包配置方法
Dec 26 Javascript
微信小程序开发背景图显示功能
Aug 08 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
Jan 08 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
Jun 24 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
简单的php写入数据库类代码分享
2011/07/26 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
python 日期操作类代码
2018/05/05 Python
python tkinter基本属性详解
2019/09/16 Python
python文件操作的简单方法总结
2019/11/07 Python
python学习笔记之多进程
2020/08/06 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
物流专业求职计划书
2014/01/10 职场文书
技校个人求职信范文
2014/01/25 职场文书
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
安全生产专项整治方案
2014/05/06 职场文书
大学同学会活动方案
2014/08/20 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL