JavaScript微信定位功能实现方法


Posted in Javascript onNovember 29, 2016

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

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

//获取地理位置信息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);//将经纬度传入到要运用的函数中
     });

    });
   }
  });
 }

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery中prop()方法用法实例
Jan 05 Javascript
原创jQuery弹出层插件分享
Apr 02 Javascript
javascript从作用域链谈闭包
Jul 29 Javascript
学习JavaScript设计模式之责任链模式
Jan 18 Javascript
详解Matlab中 sort 函数用法
Mar 20 Javascript
AngularJS 视图详解及示例代码
Aug 17 Javascript
JavaScript递归操作实例浅析
Oct 31 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
Angular中sweetalert弹框的基本使用教程
Jul 22 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
Aug 13 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
Sep 18 Javascript
JavaScript实现网页留言板功能
Nov 23 Javascript
jQuery中的select操作详解
Nov 29 #Javascript
微信小程序加载更多 点击查看更多
Nov 29 #Javascript
AngularJs表单验证实例代码解析
Nov 29 #Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
Nov 29 #Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
Nov 29 #Javascript
JavaScript获取服务器端时间的方法
Nov 29 #Javascript
微信小程序链接传参并跳转新页面
Nov 29 #Javascript
You might like
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
php 删除cookie方法详解
2014/12/01 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
php curl常用的5个经典例子
2017/01/20 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
JQuery插件开发示例代码
2013/11/06 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
javascript简易画板开发
2020/04/12 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
全球性的在线商店:Vogca
2019/05/10 全球购物
应届毕业生自荐信例文
2014/02/26 职场文书
政府绩效管理实施方案
2014/05/04 职场文书
搞笑车尾标语
2014/06/23 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL