我们平时小程序开发中需要用到定位服务传递省市区、省市区编码数据。
这时候我们可以使用 腾讯位置服务 将返回的经度、纬度进行逆地址解析,转换成详细地址
-
申请开发者密钥(key):申请密钥
-
开通webserviceAPI服务:控制台 ->应用管理 -> 我的应用 ->添加key-> 勾选WebServiceAPI -> 保存
(小程序SDK需要用到webserviceAPI的部分服务,所以使用该功能的KEY需要具备相应的权限)
-
下载微信小程序JavaScriptSDK,微信小程序JavaScriptSDK v1.1 JavaScriptSDK v1.2
-
安全域名设置,在小程序管理后台 -> 开发 -> 开发管理 -> 开发设置 -> “服务器域名” 中设置request合法域名,添加https://apis.map.qq.com
-
详细操作:
1、申请开发者密钥(key):申请密钥
2、开通webserviceAPI服务:控制台 ->应用管理 -> 我的应用 ->添加key-> 勾选WebServiceAPI -> 保存
(小程序SDK需要用到webserviceAPI的部分服务,所以使用该功能的KEY需要具备相应的权限)
下载微信小程序JavaScriptSDK,微信小程序JavaScriptSDK v1.1 JavaScriptSDK v1.2
此处我用的1.2版本,下载的文件引入项目
安全域名设置,在小程序管理后台 -> 开发 -> 开发管理 -> 开发设置 -> “服务器域名” 中设置request合法域名,添加https://apis.map.qq.com
5、小程序使用:
// 引入SDK核心类,js文件根据自己业务,位置可自行放置 var QQMapWX = require('../../libs/qqmap-wx-jssdk.js'); onLoad: function () { // 实例化API核心类 this.qqmapsdk = new QQMapWX({ key: '申请的key' }); },
async getLocation() {
let { latitude, longitude, name } = await wx.chooseLocation()
this.qqmapsdk.reverseGeocoder({
// 传入经、纬度
location: {
latitude,
longitude
},
success: (res) => {
// 获取选择的
const { street, street_number } = res.result.address_component
// province 省 city 市 district 区
const {
province, // 省
city, // 市
district, // 区
adcode, // 行政区划代码
city_code, // 城市代码,由国家码+行政区划代码(提出城市级别)组合而来,总共为9位
nation_code // 国家代码
} = res.result.ad_info
console.log(res)
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: street + street_number + name,
fullAddress: street_number + name
})
}
})
},
根据行政区划对应省市区来获取对应的adcode最后还需要再腾讯控制台设置逆解析分配