腾讯位置服务在微信小程序开发中的应用实践
腾讯位置服务简介
在微信小程序开发中,我们时常需要获取用户的地理位置信息,而使用 wx.chooseLocation()、wx.getLocation() 等 API 虽然能够很方便的让用户选择地理位置、获取用户当前的地理位置,但是这些 API 返回的数据中只包含经纬度及高度等数据,并没有包含省市区、省市区编码、街道、门牌等信息。
这时候我们可以使用 腾讯位置服务 将返回的经度、纬度信息进行逆地址解析,转换成详细地址。
通过腾讯位置服务专为微信小程序开发设计的 JavaScript SDK,开发者可以很方便地接入腾讯位置服务,
使用腾讯位置服务实现地址解析、逆地址解析、路线规划和距离计算等功能。
使用步骤
-
申请开发者密钥(key):申请密钥
-
开通 webserviceAPI 服务:控制台 => 应用管理 => 我的应用 => 添加 key => 勾选 WebServiceAPI => 保存
-
下载微信小程序 JavaScript SDK
-
安全域名设置
- 在小程序管理后台 => 开发 => 开发管理 => 开发设置 => “服务器域名” 中设置 request 合法域名
- 添加域名 https://apis.map.qq.com
详细步骤
- 下载微信小程序 JavaScriptSDK ,将 .js 文件放到小程序的 libs 目录下
- 进行安全域名设置,或者点击微信开发者工具中的暂时不校验域名
LBS 逆地址解析
使用步骤
- 在项目中引入 SDK 核心类
- 在 onLoad 中实例化 API 核心类,同时配置创建的 key
- 使用实例方法 reverseGeocoder 方法进行逆地址解析,将提供的坐标转换为详细的地址位置信息
示例代码
-
引入 SDK 核心类
// var QQMapWX = require('../../libs/qqmap-wx-jssdk.js'); import QQMapWX from '../../../../../libs/qqmap-wx-jssdk.min'
-
实例化 API 核心类
// 引入SDK核心类,js文件根据自己业务,位置可自行放置 import QQMapWX from '../../../../../libs/qqmap-wx-jssdk.min' Page({ onLoad: function () { // 实例化API核心类 this.qqmapsdk = new QQMapWX({ key: '申请的key' }) } // coding... }
-
使用 reverseGeocoder 方法进行逆地址解析,将提供的坐标转换为所在位置的文字描述的转换
// LBS 地址逆解析 // 地理定位 async onLocation() { // 获取 纬度 、精度 // const { latitude, longitude } = await wx.getLocation() // console.log(location) // 获取经、纬度、位置名称 let { latitude, longitude, name } = await wx.chooseLocation() // 使用 reverseGeocoder 方法进行逆地址解析 this.qqmapsdk.reverseGeocoder({ // 传入经、纬度 location: { latitude, longitude }, // 逆地址解析成功后执行 success: (res) => { // 获取选择的 const { street_number } = res.result.address_component // province 省 city 市 district 区 const { province, // 省 city, // 市 district, // 区 adcode, // 行政区划代码 city_code, // 城市代码,由国家码+行政区划代码(提出城市级别)组合而来,总共为9位 nation_code // 国家代码 } = res.result.ad_info this.setData({ // 省级: 前两位有值,后4位置0,如,河北省: 130000 provinceCode: adcode.replace(adcode.substring(2, 6), '0000'), provinceName: province, // 市前面多个国家代码,需要进行截取 cityCode: city_code.slice(nation_code.length), cityName: city, // 东莞市、中山市、修州市、嘉关市 因其下无区县级, districtCode: district && adcode, districtName: district, // 详细地址 address: name, fullAddress: [province, city, district, address].join('') }) } }) }
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果