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 DOM操作 基于命令改变页面
May 06 Javascript
javascript页面动态显示时间变化示例代码
Dec 18 Javascript
jquery带下拉菜单和焦点图代码分享
Aug 24 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
Jan 23 Javascript
JS简单获取当前日期和农历日期的方法
Apr 17 Javascript
JS中使用media实现响应式布局
Aug 04 Javascript
VsCode新建VueJs项目的详细步骤
Sep 23 Javascript
vue使用keep-alive实现数据缓存不刷新
Oct 21 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
Jun 29 Javascript
深入理解vue中的slot与slot-scope
Apr 22 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
Jun 10 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使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
2021/03/09 PHP
关于document.cookie的使用javascript
2008/04/11 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
Angular 容器部署的方法
2018/04/17 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
python 队列详解及实例代码
2016/10/18 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
python实现可逆简单的加密算法
2019/03/22 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
python的Jenkins接口调用方式
2020/05/12 Python
Django设置Postgresql的操作
2020/05/14 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
python基于win32api实现键盘输入
2020/12/09 Python
印度低票价航空公司:GoAir
2017/10/11 全球购物
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
皇家阿尔伯特瓷器美国官网:Royal Albert美国
2020/02/16 全球购物
如何现实servlet的单线程模式
2014/08/05 面试题
大学生关于奋斗的演讲稿
2014/01/09 职场文书
班主任班级寄语大全
2014/04/04 职场文书
小学教师教育随笔
2015/08/14 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python