重点在于,要用真机调试
本人位于北京三环内某位置,在电脑上调试微信小程序时,所调用的wx.getLocation定位一直显示北京市政府。
一开始以为是type的问题
wx.getLocation({
type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
success: function (res) {
var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
var longitude = res.longitude ; // 经度,浮点数,范围为180 ~ -180。
var speed = res.speed; // 速度,以米/每秒计
var accuracy = res.accuracy; // 位置精度
}
});
将type中的“wgs84”改成了火星坐标“gcj02”,结果返回的数据一模一样,还是北京市政府的位置。
后来在微信公众平台的微信开放社区找到了答案:
https://developers.weixin.qq.com/community/develop/doc/00020ec2dfc6b067eb3787c4456c00
在政府办公大院内部的话无论如何获取都获取不到精准的位置(位置都是政府大院附近)
在部队内部的话坐标会漂移(和政府办公大院差不多,最大差别是地图组件显示出来的是无名路之类的)
在除了上述之外的地方坐标获取都是10~100米左右误差。
另外wx.getLocation有两种坐标类型的,你要根据最终的地图组件进行坐标转换
不要在连wifi的时候测试,包括有线网,不然都是政府的位置的。
用真机有线连接测试,你可以尝试下。
然后用真机调试实验了一下,定位准确了,问题解决完毕。