Skip to content

杂碎

起因:写的小程序有接到反馈说定位到的最近小区与实际距离有几百米的差距。自己测了测,果然如此。

原来,写小程序获取用户当前定位调用的wx.getLocation api,有一个从未认真细看的属性type,其描述为“wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标”。默认是wgs84,也就是普通gps坐标。

于是,我长这么大才终于知道了地球坐标系(wgs84)和火星坐标系(gcj02)~

前者国际通用,即标准定位;后者中国通用,是前者加密加偏移过后的结果,所以值要稍微不一样,大约500m,因为定位并非准确定位,故被戏称为火星坐标。国内除了百度地图(单独的百度坐标系),其余的都要以火星坐标为准。

所以国际和国内地图定位,还要先换算一下!

p.s. 安卓使用的高德地图定位,直接定位的经纬度就是火星坐标系,而iOS使用的是苹果自带的定位系统,定位的坐标使用的是地球坐标系,没有转换。

返回到我们的情况,后端计算附近小区时依托腾讯地图,因此需要的定位为火星坐标,也就是wx.getLocation()应设置type为gcj02才准确~