Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 在中国,GPS定位总是偏移的_Google Maps - Fatal编程技术网

Google maps 在中国,GPS定位总是偏移的

Google maps 在中国,GPS定位总是偏移的,google-maps,Google Maps,我在我的应用程序中使用了最新的谷歌地图iOS SDK,似乎GPS位置在中国总是偏移1-2个街区,但在谷歌地图官方应用程序中,位置是100%正确的 我看到了这篇文章,这似乎就是为什么: 官方应用程序似乎使用了正确转换的地图,而谷歌地图iOS SDK则没有。有人找到了解决方法吗?这不是因为中国使用的坐标系与我们使用的WGS84坐标系不同吗 这里有一些可以处理WGS84翻译的软件,原因是技术(不同的基准)和政治/经济利益的结合 出于“安全考虑”,中国使用与世界其他国家不同的坐标系统,而不是GPS卫星和

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

我看到了这篇文章,这似乎就是为什么:


官方应用程序似乎使用了正确转换的地图,而谷歌地图iOS SDK则没有。有人找到了解决方法吗?

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

这里有一些可以处理WGS84翻译的软件,原因是技术(不同的基准)和政治/经济利益的结合

出于“安全考虑”,中国使用与世界其他国家不同的坐标系统,而不是GPS卫星和绝大多数地图使用的标准。所有中国地图必须经国务院批准,以表明中国在各种政治争议领土(西藏、台湾等)上的立场。批准还要求地图使用GCJ-02。这会导致WGS-84位置(例如来自未经加密的GPS接收器的GPS轨迹)在中国街道地图上绘制时显示为“关闭”

不同的坐标系通常不是问题,但中国选择加密GCJ-02,因此没有直接的转换。2010年,第一个应用程序(ditu.google.com)曾经能够计算偏差。这是一种插值方法,有点不精确。数据集与其他产品一起出售

与此同时,GCJ-02算法已被泄露,属于“公共机密”(搜索“GCJ-02转换”可找到大量结果)。值得注意的是这个项目,它提供了C、C#、Go、Java、JavaScript和PHP的转换API。该系统使用R语言处理GJC-02、WGS-084和百度BD-09之间的转换

该代码非常重要,并且还执行以下操作以确定某个位置是否在中国:

function outOfChina(lat, lng) {
    if ((lng < 72.004) || (lng > 137.8347)) {
        return true;
    }
    if ((lat < 0.8293) || (lat > 55.8271)) {
        return true;
    }
    return false;
}
中国境外功能(lat、lng){
如果((液化天然气<72.004)| |(液化天然气>137.8347)){
返回true;
}
如果((纬度<0.8293)| |(纬度>55.8271)){
返回true;
}
返回false;
}
这包括印度大部分地区、韩国和朝鲜、菲律宾、越南、蒙古、泰国以及其他许多国家:


一个改进是使用多边形边界,例如。

我下载了最新的API 1.2.1,但仍然存在相同的问题。如果显示的位置与官方谷歌地图上的位置不同,则使用SDKDemos。总是在1-2个街区外。似乎只是在中国。有修正吗?我在CLLocation上创建了一个类别,可以抵消中国的位置,以补偿错误:Yoru问题是否修正?你是在模拟器或设备上进行测试吗?显然是的。