中国区GPS偏移纠正(适用于Google地图)
2013-05-14 09:38
375 查看
转自:http://xcodev.com/131.html
在做iOS开发时,用到一个获取当前位置周边商家的功能。当时每次我在获取从iPhone里GPS返回过来的数据到Google Place API上获取时总是发现,获取的商家并不是最近的,而是几百米以外的。经多次尝试,确实是这样。我在网上搜索一下,发现原来是相关部门和谐掉了。相关部门规定:为了保证国家安全,所有的地图公司提供的地图必须对实际的GPS坐标进行一定的偏移,偏移后的GPS坐标系俗称火星坐标系,而这个偏移是不固定的,具体的算法是国家机密。悲催了,在网上找了很久,终于找到了一个解决方案:网上已经有人根据Google的相关接口,每隔0.1个经纬度获取一个地图偏移像素,把中国区的所有经纬度都转换了,组成一个数据文件。此数据文件是一个连续的结构数组:
然而这个偏移量是地图图片偏移的像素值,而我们需要的是实际上偏移的经纬度。这就需要一个把经纬度转换成地图xy轴坐标的算法:
然后把这个地图xy轴坐标加上对应的地图xy轴的偏移量,最后还要反过来将最终正确的地图xy轴坐标转换成正确的经纬度:
我写了WGS2Mars方法,他的参数是经度和维度的地址,同时将转换好的经纬度传递回来。由于数据库的结构完全是按照顺序的,所以我用了c标准库的折半查找算法,你需要包含一下<stdlib.h>这个头文件。
在做iOS开发时,用到一个获取当前位置周边商家的功能。当时每次我在获取从iPhone里GPS返回过来的数据到Google Place API上获取时总是发现,获取的商家并不是最近的,而是几百米以外的。经多次尝试,确实是这样。我在网上搜索一下,发现原来是相关部门和谐掉了。相关部门规定:为了保证国家安全,所有的地图公司提供的地图必须对实际的GPS坐标进行一定的偏移,偏移后的GPS坐标系俗称火星坐标系,而这个偏移是不固定的,具体的算法是国家机密。悲催了,在网上找了很久,终于找到了一个解决方案:网上已经有人根据Google的相关接口,每隔0.1个经纬度获取一个地图偏移像素,把中国区的所有经纬度都转换了,组成一个数据文件。此数据文件是一个连续的结构数组:
相关文章推荐
- 中国区GPS偏移纠正(适用于Google地图)
- 中国区GPS偏移纠正(适用于Google地图)
- 中国区GPS偏移纠正(适用于Google地图)
- IOS中GPS定位偏移纠正(适用于Google地图)
- IOS中GPS定位偏移纠正(适用于Google地图)
- IOS中GPS定位偏移纠正(适用于Google地图)
- GPS偏移纠正(适用于Google地图)
- IOS中GPS定位偏移纠正(适用于Goog…
- iOS LBS相关: 定位和中国特色的位置偏移纠正
- Google地图百度地图GPS经纬度偏移转换(JAVA)
- Google地图百度地图GPS经纬度偏移转换(JAVA)
- 转 Google地图百度地图GPS经纬度偏移转换(JAVA) 转
- iOS LBS相关: 定位和中国特色的位置偏移纠正
- Google地图百度地图GPS经纬度偏移转换(JAVA)
- GPS坐标互转:WGS-84(GPS)、GCJ-02(Google地图)、BD-09(百度地图)
- 微软开放技术(中国) 发布适用于 Discuz! 以及 DedeCMS 的必应地图插件
- Google地球(GPS)坐标之地图坐标偏移
- 地图经纬度偏移解决办法:GPS纠偏数据库纠偏,经纬度纠偏问题
- 火星坐标、偏移、加偏和纠偏、无偏的理解--gps纠偏专业技术
- [转]GPS纠偏算法,适用于google,高德体系的地图