微信小程序获取准确的腾讯定位地址&解决小程序发布以后不能获取地址逆解析问题

官方参考文档:https://lbs.qq.com/qqmap_wx_jssdk/index.html

逆地址解析(坐标位置描述)

  1. 申请开发者密钥(key)与设置
    个人使用:登录,点击“key管理”,进入设置,选择“WebServiceAPI”,如果没有小程序ID,勾选“授权IP”,如果有小程序ID,勾选“域名白名单”,且勾选“微信小程序”,输入授权APPID。
    https://lbs.qq.com/console/key.html
    企业使用:登录企业微信公众号,选择“开发”-“开发者工具”,开通“腾讯位置服务”,进入后台管理;点击“key管理”,进入设置,勾选所需要使用的企业名下的小程序ID,选择“WebServiceAPI”,勾选“域名白名单”。

  2. 下载微信小程序JavaScriptSDK

  3. 添加小程序地理位置说明
    2019年1月14日起新提交发布的版本若未填写地理位置用途说明,则将无法正常调用地理位置相关接口,请及时填写地理位置用途说明
    相关文档:https://developers.weixin.qq.com/community/develop/doc/000ea276b44928f7e8d73d0a65b801?idescene=6
    在app.json中添加以下代码

"permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
    }
  }
  1. JS 代码
var QQMapWX = require('../../../page/common/sdk/qqmap-wx-jssdk.js');
var qqmapsdk = new QQMapWX({
  key: 'Key'
});
 console.log('signin')
      const _this = this;
      wx.getLocation({
        type: 'gcj02',
        success: function (res) {
          qqmapsdk.reverseGeocoder({
            location: {
              latitude: res.latitude,
              longitude: res.longitude
            },
            success: function (addressRes) { //成功后的回调
              var addressRes = addressRes.result;
              console.log( addressRes.address)
               },
            fail: function (error) {
              console.error(error);
            },
            complete: function (addressRes) {
              console.log(addressRes);
            }
          })
        }
      })

成功获取到的信息截图
成功获取到的信息截图
微信开发者工具上进行测试的时候,定位不准确,需要启用“真机调试”,在手机上即可准确获取定位信息。

  1. 百度地图坐标转化JS
    实际应用中发现腾讯地图定位的坐标不准确,地址正确但定位坐标相差很远,后期在地图上进行展示的时候建议使用百度地图,可以准确的在地图上显示。
    代码写在获取地址成功调用里面。
			 var addressRes = addressRes.result;
              var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
              var x = parseFloat(addressRes.location.lng);
              var y = parseFloat(addressRes.location.lat);
              var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
              var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
              var lng = z * Math.cos(theta) + 0.0065;
              var lat = z * Math.sin(theta) + 0.006;
              console.log(lng)
              console.log(lat)

发布以后小程序不能获取腾讯地图逆解析

划重点:发布以后小程序中以下这段函数,会进入fail,获取逆解析失败

qqmapsdk.reverseGeocoder({
            location: {
              latitude: res.latitude,
              longitude: res.longitude
            },
            success: function (addressRes) { //成功后的回调
              var addressRes = addressRes.result;
              console.log( addressRes.address)
               },
            fail: function (error) {
              console.error(error);
            },
            complete: function (addressRes) {
              console.log(addressRes);
            }
          })

解决方案:服务器域名的配置文件中“request合法域名”中需要添加调用的“https://apis.map.qq.com
注意了:真机、测试都不会报错,小程序体验版中调试也不会报错,但是,就是会在正式发布的版本中,报错~~~~坑

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
要在微信小程序中调用腾讯地图,需要先在小程序管理后台进行配置并授权。以下是授权并获取位置的步骤: 1. 在小程序管理后台中,打开“开发”->“接口设置”->“腾讯地图”,并勾选“使用腾讯地图”和“地图SDK”,保存并提交审核。 2. 在小程序中引入腾讯地图SDK的JS文件: ``` <!-- 引入腾讯地图SDK --> <script src="https://map.qq.com/api/js?v=2.exp&key=你的腾讯地图Key"></script> ``` 3. 在小程序中使用wx.getLocation()方法获取用户位置: ``` // 获取用户位置 wx.getLocation({ type: 'gcj02', success(res) { // 获取成功,可以使用腾讯地图SDK // 创建地图实例 var map = new qq.maps.Map(document.getElementById("map"), { center: new qq.maps.LatLng(res.latitude, res.longitude), zoom: 18 }); }, fail(res) { // 获取失败,提示用户授权地理位置 wx.showToast({ title: '请先授权地理位置', icon: 'none' }); } }); ``` 在上述代码中,wx.getLocation()方法可以获取用户的经纬度信息,并可以指定返回的坐标系类型(gcj02表示国测局坐标系)。获取成功后,可以使用腾讯地图SDK创建地图实例,并将地图中心位置设置为用户的当前位置。如果获取失败,可以提示用户授权地理位置。 注意:在小程序中使用腾讯地图SDK需要先获取用户位置授权,可以在小程序中使用wx.authorize()方法进行授权。另外,使用腾讯地图SDK需要在小程序管理后台中绑定腾讯地图Key。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值