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 页面 Mask实现代码
Jan 09 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
Jun 25 Javascript
JQuery页面的表格数据的增加与分页的实现
Dec 10 Javascript
给before和after伪元素设置js效果的方法
Dec 04 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
Dec 07 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
Dec 18 Javascript
详解用webpack2.0构建vue2.0超详细精简版
Apr 05 Javascript
Node.js如何对SQLite的async/await封装详解
Feb 14 Javascript
小程序分享模块超级详解(推荐)
Apr 10 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
Jun 03 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
Sep 17 Javascript
前端vue如何使用高德地图
Nov 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微信开发之上传临时素材
2016/06/24 PHP
微信支付开发订单查询实例
2016/07/12 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
javascript 玩转Date对象(实例讲解)
2017/07/11 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
Vue实现简易计算器
2020/02/25 Javascript
Python 正则表达式操作指南
2009/05/04 Python
Python功能键的读取方法
2015/05/28 Python
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
python plotly绘制直方图实例详解
2019/07/22 Python
django创建简单的页面响应实例教程
2019/09/06 Python
django orm模块中的 is_delete用法
2020/05/20 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
会计电算化专业应届大学生求职信
2013/10/22 职场文书
物业电工岗位职责
2013/11/20 职场文书
机修工工作职责
2014/02/21 职场文书
大课间体育活动方案
2014/03/12 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
虎兄虎弟观后感
2015/06/12 职场文书
vue+element ui实现锚点定位
2021/06/29 Vue.js
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
keepalived + nginx 实现高可用方案
2022/12/24 Servers