在uniapp开发微信小程序时,碰到问题获取定位会出现问题,跟目前位置有几百米偏差
官方示例:
uni.getLocation({
type: 'wgs84',
success: function (res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
}
});
按照示例来,会出现问题,改完以后:
uni.getLocation({ type: 'gcj02', isHighAccuracy:true, success: function(res) { state.value.longitude = res.longitude state.value.latitude = res.latitude state.value.covers[0].longitude = res.longitude state.value.covers[0].latitude = res.latitude }, fail(error) { uni.showToast({ title: '请勿频繁调用!', icon: 'none', }) console.log('失败', error) } })
问题的关建是在type属性要使用gcj02
GPS坐标(WGS84)是全球定位系统使用的坐标系,通常用于全球范围内的位置定位。而GCJ02(国测局坐标)是中国国家测绘局制定的一种地理坐标系,也称为火星坐标系,用于在中国境内进行位置定位。
区别主要体现在以下几个方面:
坐标偏移:由于安全和政策等原因,中国政府对GPS定位进行了加密偏移处理,导致GPS获取的坐标与实际位置存在一定的偏差。GCJ02是一种基于加密偏移后的坐标系,相对于GPS坐标有一定的偏移。
数据保护:使用GPS定位获取的坐标信息属于全球公开数据,而GCJ02坐标是经过国家加密处理的,相对于GPS坐标具有更高的数据保护性。
地图匹配:在中国,大部分地图应用都会使用GCJ02坐标系进行地图展示和位置匹配。如果直接使用GPS坐标在中国的地图上进行标注,可能会出现位置不准确的情况。
需要注意的是,GCJ02坐标并不是一个全球通用的坐标系,它主要适用于中国境内的地理定位。在应用开发中,如果需要在中国境内进行位置展示、导航等功能,建议使用GCJ02坐标系进行计算和显示。如果需要与国际通用的坐标系统进行交互,可以使用坐标转换算法将坐标数据转换为其他系统(如WGS84)的坐标。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_61315972/article/details/132688779