首页 > 编程 > JavaScript > 正文

JavaScript微信定位功能实现方法

2019-11-19 18:46:19
字体:
来源:转载
供稿:网友

分享下微信是如何定位的:

本文主要讲解如何利用微信定位,如何将定位到的经纬度转换为百度地图对应的经纬度,以及处理定位失败、取消及错误时的默认做法。

//获取地理位置信息start//封装成一个函数 function getPosition() { //用ajax请求  $.ajax({   url: "/wechat/jssdk",//请求地址   type: 'post',//post请求   dataType: 'json',   contentType: "application/x-www-form-urlencoded; charset=utf-8",   data: {    'url': location.href.split('#')[0]//将第一个#号前的地址传递   },//请求成功的函数   success: function (data) {    wx.config({     // debug: true,     appId: data.data.appId,     timestamp: data.data.timestamp,     nonceStr: data.data.nonceStr,     signature: data.data.signature,     jsApiList: ['checkJsApi', 'getLocation']    });    wx.ready(function () {     wx.getLocation({     //获得定位成功      success: function (res) {      //这是微信返回的真正经纬度       var oldLat = res.latitude; // 纬度,浮点数,范围为90 ~ -90       var oldLng = res.longitude; // 经度,浮点数,范围为180 ~ -180。       /*下面是为了将获得的真正经纬度转换为对应的百度经纬度,因为是利用百度地图的经纬度去查询数据的,数据库中存的也是百度的经纬度*/       //创建一个百度地图的点       var customerPoint = new BMap.Point(oldLng, oldLat);       //       var convertor = new BMap.Convertor();       var pointArr = [];//创建一个数组       pointArr.push(customerPoint);//将刚才的点放进去       convertor.translate(pointArr, 1, 5, initMap); //转换坐标       function initMap(data) {        if (data.status === 0) {//转换成功         var point = data.points[0];//得到后的点         var lng = point.lng;//获得转换后的经度         var lat = point.lat;//获得转换后的纬度         toDoFunction(lng, lat);//将经纬度传入到要运用的函数中        } else {        //下面两行是默认定位到西湖的经纬度         lng = 120.141375;         lat = 30.257806;         toDoFunction(lng, lat);//将经纬度传入到要运用的函数中        }       }      },      //取消定位      cancel: function () {      //下面两行是默认定位到西湖的经纬度       var lng = 120.141375;       var lat = 30.257806;       toDoFunction(lng, lat);//将经纬度传入到要运用的函数中      },      //定位失败      fail: function () {      //下面两行是默认定位到西湖的经纬度       var lng = 120.141375;       var lat = 30.257806;       toDoFunction(lng, lat);//将经纬度传入到要运用的函数中      }     });     //定位发生错误     wx.error(function () {     //下面两行是默认定位到西湖的经纬度      var lng = 120.141375;      var lat = 30.257806;      toDoFunction(lng, lat);//将经纬度传入到要运用的函数中     });    });   }  }); }

以上代码,如果可以定位到就用定位到的真正的经纬度,再转换成百度地图对应的经纬度,如果定位失败或者是点击取消或者发生错误,则默认定位到西湖的经纬度。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表