我在我的应用程序中使用最新的谷歌地图iOS SDK,似乎GPS位置总是在中国偏移1-2个街区,但是,在谷歌地图官方应用程序中,位置是100%正确.
我发现这篇文章似乎就是为什么:http://home.wangjianshuo.com/archives/20081109_all_maps_in_china_are_transformed.htm
官方应用程序似乎使用正确转换的地图,而Google Maps iOS SDK则没有.有没有人找到解决方法?
中国GPS偏移的原因是技术(不同基准)和政治/经济利益的结合.
由于"安全问题",中国使用与世界其他地方不同的坐标系统 - GCJ-02而不是GPS卫星和绝大多数地图使用的WGS-84标准.所有中国地图必须经国务院批准,以标明中国在各种政治争议财产(西藏,台湾等)的立场.批准还要求地图使用GCJ-02.这导致WGS-84位置(例如来自未掺杂的GPS接收器的GPS轨迹)在中国街道地图上绘制时显示为"关闭".
不同的坐标系通常不是问题,但中国选择加密 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.
| 归档时间: |
|
| 查看次数: |
4574 次 |
| 最近记录: |