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 相关文章推荐
Mootools 1.2教程 Fx.Tween的使用
Sep 15 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
Jun 20 Javascript
60个很实用的jQuery代码开发技巧收集
Dec 15 Javascript
JavaScript实现对下拉列表值进行排序的方法
Jul 15 Javascript
js数组操作方法总结(必看篇)
Nov 22 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
Dec 06 Javascript
在 Angular中 使用 Lodash 的方法
Feb 11 Javascript
redux.js详解及基本使用
May 24 Javascript
vue axios重复点击取消上一次请求封装的方法
Jun 19 Javascript
解决layer图标icon不加载的问题
Sep 04 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
React + Threejs + Swiper 实现全景图效果的完整代码
Jun 28 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
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
JS查看对象功能代码
2008/04/25 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
Dom 结点创建 基础知识
2011/10/01 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
python学生管理系统代码实现
2020/04/05 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
python编程使用协程并发的优缺点
2018/09/20 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
局域网定义和特性
2016/01/23 面试题
毕业生实习证明
2014/09/19 职场文书
期末考试复习计划
2015/01/19 职场文书
员工家属慰问信
2015/03/24 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
拔河比赛新闻稿
2015/07/17 职场文书