关于android定位的坐标系问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于android定位的坐标系问题相关的知识,希望对你有一定的参考价值。

按照正常的思路,我们通过GPS或者基站定位等方式获取到经纬度信息后,把它放到地图上,就能够完成定位。但实际上,我们很有可能会在实际操作中发现,我们的定位出现了较大的偏移。这是因为我国出于国家安全(或者¥@#%¥##)的考虑,会将所有的电子地图经行加偏处理,由真实的地理坐标系又称地球坐标系(WGS84)转换为火星坐标系(GCJ02)。这就是我们定位出现偏移的原因,也是坐标系问题产生的根源

那么,我们要怎样处理坐标系问题呢。就以我们常用的百度与高德地图api为例来说明。百度地图的坐标系是在火星坐标系的基础上又自行加密的BD09坐标系,高德地图的坐标系是常见的火星坐标系GCJ02。那么很好理解了,既然百度地图是BD09坐标系的,那么通过百度地图API获得的经纬度也是BD09坐标系的,直接显示,没有问题;同理,通过高德地图API获得的经纬度也一定是GCJ02的,可以在高德地图上直接显示。但是我们如果没有调用第三方地图API,而是使用android.location获取的经纬度,或者是通过手持或车载的GPS终端获取的经纬度,那就是属于WGS84的真实的地理坐标,这时候,直接在百度或者高德地图上显示是会出现偏移的

那么,遇到经纬度与地图的坐标系不相符的情况下,怎么办呢?最优的办法就是调用你所使用的地图的服务商提供的坐标系转换接口,有可能是付费接口。不推荐使用网上流传甚广的地球坐标系与火星坐标系转换算法,实测误差较大。如果,实在没有办法的话,在小范围内,给经纬度加一个固定的修正值,也勉强可用。注意,是小范围,因为加偏虽然不是线性的,但是一定范围的的偏移量不会相差太大,通过一个固定的修正值,还是能够在小范围内提高定位精度的。至于这个范围怎么确定,我也不知道...

以上是关于关于android定位的坐标系问题的主要内容,如果未能解决你的问题,请参考以下文章

FAQ关于华为地图服务定位存在偏差的原因及解决办法

FAQ关于华为地图服务定位存在偏差的原因及解决办法

关于Cesium地图点击不准的问题

HTML / JS 地理定位和比较坐标

关于百度地图js api的getCurrentPosition定位不准确的解决方法

总结关于iOS室内定位开发踩过的一些坑。。。