我在我的应用程序中使用最新的Google Maps iOS SDK,似乎GPS位置总是在中国偏移1-2个街区,但是,在Google Maps官方应用中,该位置100%正确。< / p>
我发现这篇帖子似乎就是为什么:http://home.wangjianshuo.com/archives/20081109_all_maps_in_china_are_transformed.htm
官方应用似乎使用了正确转换后的地图,而Google地图iOS SDK却没有。有没有人找到解决方法呢?
答案 0 :(得分:6)
GPS offset in China的原因是技术(不同基准)和政治/经济利益的结合。
由于&#34;安全问题&#34;,中国使用与世界其他地方不同的坐标系 - GCJ-02而不是GPS卫星使用的WGS-84标准和绝大多数地图所有中国地图必须经国务院批准,以标明中国在各种政治争议财产(西藏,台湾等)的立场。批准还要求地图使用GCJ-02。这导致WGS-84位置(例如来自未掺杂的GPS接收器的GPS轨迹)出现&#34;关闭&#34;在中国街道地图上绘制时。
不同的坐标系通常不是问题,但中国选择加密 GCJ-02,因此没有直接的转换。第一个attempt at a conversion使用了a database of coordinates obtained from Google China Maps(ditu.google.com),因为它曾经能够计算出2010年的偏差。这是一种插值方法,有点不精确。数据集随offsets calculated for thousands of Chinese cities一起销售。
与此同时,GCJ-02算法已被泄露,并且是一个公共秘密&#34; (搜索&#34; GCJ-02转换&#34;发现大量结果)。值得注意的是eviltransform项目,该项目提供C,C#,Go,Java,JavaScript和PHP的转换API。 geoChina library使用R处理GJC-02,WGS-084和百度BD-09之间的转换。
代码非常重要,并执行very rough bounding box check来确定某个位置是否位于中国:
function outOfChina(lat, lng) {
if ((lng < 72.004) || (lng > 137.8347)) {
return true;
}
if ((lat < 0.8293) || (lat > 55.8271)) {
return true;
}
return false;
}
包括大部分印度,南韩,朝鲜,菲律宾,越南,蒙古,泰国和其他许多国家:
改进是使用多边形边界,例如china.kml。
答案 1 :(得分:0)