GPS位置在中国总是被抵消

Jos*_*osh 10 google-maps

我在我的应用程序中使用最新的谷歌地图iOS SDK,似乎GPS位置总是在中国偏移1-2个街区,但是,在谷歌地图官方应用程序中,位置是100%正确.

我发现这篇文章似乎就是为什么:http://home.wangjianshuo.com/archives/20081109_all_maps_in_china_are_transformed.htm

官方应用程序似乎使用正确转换的地图,而Google Maps iOS SDK则没有.有没有人找到解决方法?

Dan*_*scu 6

中国GPS偏移的原因是技术(不同基准)和政治/经济利益的结合.

由于"安全问题",中国使用与世界其他地方不同的坐标系统 - GCJ-02而不是GPS卫星和绝大多数地图使用的WGS-84标准.所有中国地图必须经国务院批准,以标明中国在各种政治争议财产(西藏,台湾等)的立场.批准还要求地图使用GCJ-02.这导致WGS-84位置(例如来自未掺杂的GPS接收器的GPS轨迹)在中国街道地图上绘制时显示为"关闭".

GPS坐标在GCJ-02地图上显示偏移

不同的坐标系通常不是问题,但中国选择加密 GCJ-02,因此没有直接的转换.转换的第一次尝试使用了从谷歌中国地图(ditu.google.com)获得的坐标数据库,以便能够计算2010年的偏差.这是一种插值方法,有点不精确.数据集出售,计算了数千个中国城市的抵消额.

与此同时,GCJ-02算法已被泄露并且是一个"公开秘密"(搜索"GCJ-02转换"发现了大量结果).流行的笔记是eviltransform项目,它提供C,C#,Go,Java,JavaScript和PHP的转换API.该geoChina库处理GJC-02,WGS-084和百度的BD-09之间转换,使用R.

代码非常重要,并且还执行非常粗略的 边界框检查以确定某个位置是否在中国:

function outOfChina(lat, lng) {
    if ((lng < 72.004) || (lng > 137.8347)) {
        return true;
    }
    if ((lat < 0.8293) || (lat > 55.8271)) {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

其中包括印度大部分地区,南韩和朝鲜,菲律宾,越南,蒙古,泰国和其他许多国家:

在此输入图像描述

改进是使用多边形边界,例如china.kml.


Lee*_*ong 0

这不是因为中国使用的坐标系与我们使用的WGS84坐标系不同吗?

这是一些可以处理 WGS84 翻译的代码

  • 显然,[不太清楚该代码是否也能处理 GPS 偏差](https://github.com/googollee/eviltransform/issues/6)。 (2认同)