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 相关文章推荐
JS 常用校验函数
Mar 26 Javascript
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
Nov 24 Javascript
文本框获得焦点和失去焦点的判断代码
Mar 18 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
Jun 18 Javascript
jQuery中setTimeout的几种使用方法小结
Apr 07 Javascript
javascript的BOM汇总
Jul 16 Javascript
javascript跨域的方法汇总
Oct 23 Javascript
jquery获取复选框的值的简单实例
May 26 Javascript
Node.js中防止错误导致的进程阻塞的方法
Aug 11 Javascript
AngularJS指令详解及示例代码
Aug 16 Javascript
详解Vue使用命令行搭建单页面应用
May 24 Javascript
JavaScript函数apply()和call()用法与异同分析
Aug 10 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
php 中的str_replace 函数总结
2007/04/27 PHP
使用 MySQL Date/Time 类型
2008/03/26 PHP
php数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
php实现webservice实例
2014/11/06 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
JavaScript中instanceof运算符的用法总结
2013/11/19 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
python类定义的讲解
2013/11/01 Python
给Python入门者的一些编程建议
2015/06/15 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
python三引号输出方法
2019/02/27 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
python中有函数重载吗
2020/05/28 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
科室工作的个人自我评价
2013/10/30 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
初二英语教学反思
2016/02/15 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
MYSQL 表的全面总结
2021/11/11 MySQL
Windows7下FTP搭建图文教程
2022/08/05 Servers