两种模式
默认为 wgs84 返回 gps 坐标,gcj02 返回国测局坐标,可用于 uni.openLocation 和 map 组件坐标,App 和 H5 需配置定位 SDK 信息才可支持 gcj02。
wgs84
wgs84只能获取粗略的经纬度,偏差可能会比较大
uni.getLocation({
type: 'wgs84',
success: function (res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
}
});
success 这样写的时候要注意this的指向问题
像上面这样写可以在方法外面 定义一个参数等于this
例如 let that = this
如果不定义参数 就把success写成箭头函数就行
success:(res)=>{...}
gcj02
使用gcj02需要配置定位的sdk,我使用的高德地图
gcj02可以获取精确的地理位置
geocode:true 时 success返回的参数会多一个address
address返回的是地址信息
上面是address返回的参数说明
uni.getLocation({
type: 'gcj02',
geocode:true, // 可以解析地址信息,仅App平台支持(安卓需指定 type 为 gcj02 并配置三方定位SDK)
success: function (res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
}
});
获取到经纬度和精确位置之后就可以使用高德地图的地理定位和逆地理定位了,需要注意的是 使用高德地图的这些api需要申请Web服务API类型Key
详细的可以查阅一下高德地图的api文档