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 相关文章推荐
iframe 异步加载技术及性能分析
Jul 19 Javascript
JavaScript 一道字符串分解的题目
Aug 03 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
Jan 21 Javascript
Jquery实现带动画效果的经典二级导航菜单
Mar 22 Javascript
简单实用jquery版三级联动select示例
Jul 04 Javascript
概述jQuery的元素筛选
Nov 23 Javascript
原生javascript实现图片放大镜效果
Jan 18 Javascript
javascript 封装Date日期类实例详解
May 28 Javascript
JS鼠标3次点击事件实现代码及扩展思路
Sep 12 Javascript
vue2 设置router-view默认路径的实例
Sep 20 Javascript
详解vue 组件的实现原理
Nov 12 Javascript
Echarts如何重新渲染实例详解
May 30 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入门速成(2)
2006/10/09 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
Angular 4环境准备与Angular cli创建项目详解
2017/05/27 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
浅析vue-router原理
2018/10/19 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
Python入门之三角函数全解【收藏】
2017/11/08 Python
python实现决策树分类
2018/08/30 Python
pandas.cut具体使用总结
2019/06/24 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
屈臣氏泰国官网:Watsons TH
2021/02/23 全球购物
PHP如何自定义函数
2016/09/16 面试题
总经理助理职责
2014/02/04 职场文书
经典婚礼主持词
2014/03/13 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
给老婆的检讨书
2015/01/27 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android