因为项目需要,最近一直在研究谷歌在线地图,由于一直都是VC开发,没怎么接触JAVA脚本,所以选择了最简单的谷歌静态地图服务,也就是直接给定网址获取地图图片。随着工作的进展,发现了一个严重的问题:天朝为了所谓的安全考虑,所有地图提供商都对地图进行了GPS偏移处理,这个偏移算法自然不会公布出来,而我数学能力也不行,不能像网上某些牛人通过一些采样点来拟合推导出偏移算法来。

在网上发现有人出售偏移数据库文件,不知道是不是有关部门赚外快,算法不公开,数据就成了物以稀为贵,咨询了卖家,0.001精度的数据库要价1K,为了显示诚意,卖家公布了一个网址,输入一个GPS,可以查询它的偏移量,网址是:http://aaa2011.a151.xunbiz.net/webgps2map.aspx,顺便解释一下,所谓的0.001精度就是每隔0.001度提供一个偏移修正值,体积高达20G,0.01精度的都有1G,详细信息可以在上述网址了解一下;在网上发现有人可以免费提供0.1精度的数据库文件,不过我发了邮件好些天了,也没得到回复。

正是由于没能顺利拿到免费的0.1精度的数据库文件,我一时突发奇想:既然提供了查询偏移的网址,为何不从这个网址下载数据呢,说干就干,一个周不到,从设计到编码到测试,一个下载工具就完成了,然后一个周不到,0.1精度的数据全部下载完毕,既然卖家说0.1精度是可以免费提供,那我也发到CSDN供需要的网友下载,为了补偿一下我几次熬夜的辛苦工作,数据库文件和工具各需要5个下载积分。

这里对数据库文件和下载工具进行简单的介绍:

下载工具的截图:

西部片区N:27-45,E:75-98表示北纬27-45度,东经75-98度这个区域

为了减少下载的数据量,我把天朝分为了三个区域,西部、中部和东北部,这样0.1精度的文件就只有400K,比卖家提供的小了N多倍,为了进行扩展和安全检查,我把每个偏移信息定义为一个结构体,这样文件的体积就达到2M,也比卖家提供的要小很多。

为了方便大家使用,在‘区域’下拉框里面有个‘自定义区域’,选择它以后会弹出一个对话框,在里面可以设置经纬度范围,效果图如下:

注:因为国外是不存在GPS偏移问题,所以经纬度范围里面有个限制,只能在天朝。

软件开始下载后的截图:

设定好经纬度范围和下载线程个数以后,点击‘开始’下载纠偏数据。

可以在软件界面下面的列表框里面看到下载过程中的各种信息,比如当前下载纬度,下载遇到的错误等,注:如果下载错误,软件会自动重新下载,直到该GPS坐标的纠偏数据下载成功。

下载的流程伪代码:

因为是下载0.1精度的数据,

纬度范围 RangOfLttd = ( M - N ) * 10;

经度范围 RangOfLgtd = ( A - B ) * 10;

for ( 纬度 i = 0; i < RangOfLttd; ++i ) {

for ( 经度 j = 0; j < RangOfLgtd; ++j ) {

当前纬度  fLttdCur = N + i * 0.1f;

当前经度 fLgtdCur= B + j * 0.1f;

Download( fLttdCur, fLgtdCur );

}

}

下面是下载好的数据文件截图:

数据库文件就是一个普通的二进制文件,命名格式如‘30-(98-122).txt’,表示该文件里面存储了北纬30度,东经98-122范围的纠偏数据,里面有N个偏移信息结构体,顺序请参考上面下载工具的流程介绍,定义如下:

#pragma pack(1)

typedef struct tagGPS_Offset

{

int   nMark;      //标记 0xF109

int   nLttd ;       //纬度

int   nLgtd;       //经度

int   nLtt_ ;       //纬度偏差

int   nLgt_;       //经度偏差

}GPS_Offset;

#pragma pack()

注:nLttd和nLgtd都已经乘了10,nLtt_和nLgt_都已经乘了10000,使用的时候可以这样处理

float fLttd = GPS_Offset.nLttd * 0.1f;      //纬度

float fLgtd = GPS_Offset.nLgtd * 0.1f;    //经度

float fLtt_  = GPS_Offset.nLtt_  * 0.0001f;     //纬度偏移量

float fLgt_ = GPS_Offset.nLgt_ * 0.0001f;    //经度偏移量

偏移后的经纬度(也就是传递给地图显示的经纬度):

float fLttd_offset  = fLttd  + fLtt_;

float fLgtd_offset = fLgtd + fLgt_;

0.1精度偏移修正数据(二进制)下载地址:点击打开链接

0.1精度偏移修正数据(文本)下载地址:点击打开链接

GPS偏移修正数据下载工具:点击打开链接

附:0.1精度偏移修正数据配套查询工具以及源码:点击打开链接

注:可能被网站发现有人在下载数据,已经修改了一些网页参数,我刚更新了下载工具,若以前的下载工具无法下载GPS校正数据,请重新点击上面的链接下载最新版本。我会定期更新下载工具版本。另外,请2012年7月14日之前下载了GPS校正数据包的网友,重新点击上面的链接下载最新校正数据,目前又增加了一些数据,现在能覆盖全国,以前的数据没有覆盖辽宁省。

提示:因为平时工作比较忙,不可能及时的更新下载工具,会编程的网友可以自己去http://aaa2011.a151.xunbiz.net/webgps2map.aspx下载数据,不会编程的,可以发QQ信息,我有空可以帮忙一下,因为我也提供了校正数据,我想大部分时候都不需要自己再重新下了。

如果有什么疑问,可以发QQ信息咨询,QQ592220558

android地图偏移谷歌中国地图偏移校正补丁,关于谷歌地图GPS偏移问题的解决办法...相关推荐

  1. 【Android】高德地图在Debug模式下运行正常但是打Release包时则闪退解决办法

    [Android]高德地图在Debug模式下运行正常但是打Release包时则闪退解决办法 来源: https://blog.csdn.net/weixin_39370093/article/deta ...

  2. Android Stduio 发生 Process ‘command ‘somePath:java.exe‘‘ finished with non-zero exit value 2 异常的解决办法

    Android Stduio 发生 Process 'command 'somePath:java.exe'' finished with non-zero exit value 2 异常的解决办法 ...

  3. android studio创建项目一直,Android Studio在创建/导入项目的时候,一直处于building “XXX”gradle project info的解决办法...

    Android Studio在新建项目或者导入项目的时候,可能会一直处于building "XXX"gradle project info的状态,而且还取消不了,无奈之下只能干掉进 ...

  4. android虚拟器没有菜单,网易MuMu模拟器不显示Menu(菜单)键的解决办法

    解决方法一: 前提:需要一个键盘 步骤: 1.直接按下键盘上的Menu键. 解决方法二: 前提:需要Root之后的文件浏览器 步骤: 1.在文件管理器中打开 /System 文件夹: 2.复制 bui ...

  5. 百度度地图总是提示key 验证出错 请在 AndroidManifest xml 文件中检查 key 设置解决办法

    调用百度度地图总是提示key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置 logcat提示如下 01-06 10:08:37.886: E/baidumapsd ...

  6. Android安装包apk文件在某些版本操作系统上安装解析包出错问题的解决办法

    当我们将Android升级功能的中的下载新版本apk文件存放在data/data/xxx.apk位置时,在有的些版本的手机中安装可能会出现安装包解析出错的问题,对于该问题的解决方案是提升该文件的权限. ...

  7. HTML字体小于12谷歌不兼容,Chrome谷歌浏览器下不支持css字体小于12px的解决办法【原创】...

    先来看下 ie.火狐.谷歌浏览器下各个字体显示情况 ie下: 火狐下: 谷歌下: 从上面的图可以很明显看出谷歌下 css设置字体大小为12px及以下时,显示都是一样大小,都是默认12px; 那么网上一 ...

  8. sd卡linux错误检测,android系统正在准备SD卡正在检测是否有错误且SD卡无法读取解决办法...

    手机android系统,也许您会碰到这样的情况. 错误提示:正在准备SD卡 正在检测是否有错误.这时sd卡(即内存卡)不能正常使用,不管手机自带的程序,还是通过usb口连接到电脑都无法识别sd卡. 这 ...

  9. Android 调用系统相机拍照,生命周期重走OnCreate,导致无数据的解决办法

    extends:http://blog.csdn.net/b275518834/article/details/42347903 BUG具体体现为 : (1) 摄像头拍照后图片数据不一定能返回 ; o ...

  10. Android中ActionBar中不显示overflow(就是三个点的那个按钮)解决办法

    最近写安卓想实现actionbar上的一些按钮,但是新的安卓版本似乎有问题,很难显示出那个三个点的菜单,找了很多教程,还是这个靠谱一些. 当新建android工程后,发现原来使用的ActionBar的 ...

最新文章

  1. IOS-开发中手势的处理
  2. python入门教程非常详细-python初学者怎么入门:python入门教程非常详细
  3. mysql一些操作个人备忘(持续更新)
  4. C语言模拟实现标准库函数之memcpy()
  5. 前端学习(2611):vuex实现增加
  6. 天池 在线编程 求和查找
  7. 常用的数学计算工具类
  8. 【第43题】【062题库】2019年OCP认证062考试新题
  9. 仿秒秒测日历页面和部分功能
  10. oracle 11g查隐含参数,oracle隐含参数修改与查看
  11. 微分中值定理——(罗尔定理、拉格朗日定理、导数极限定理、达布定理、柯西定理)
  12. 双一流大学王牌专业计算机,重点大学的王牌专业,双一流大学的王牌专业都有哪些?...
  13. 借助Jackson的JsonTypeInfo注解实现多态类的解析
  14. TIM腾讯聊天(即时通信 IM)(咨询客服业务)
  15. 终于有人把云计算、大数据和人工智能讲明白了!
  16. <计算机视觉 六> 深度学习目标检测模型的评估标准
  17. mysql 去除逗号_mysql注入之过滤逗号
  18. 密码爆破工具:Medusa(美杜莎)-操作说明hydra-操作说明
  19. 第一行代码:Android(第三版)
  20. 组织敏捷转型中的 HR

热门文章

  1. Ubuntu安装GCC 3.4
  2. Cognos report studio 清单表优化实录
  3. Linux内存管理之mmap
  4. unity通过服务器地址下载文件
  5. 贪心算法几个经典的例子
  6. 精读CSS权威指南第四版(3)
  7. 有哪些知名的短信接口提供商
  8. 哈工大网络安全实验二报告
  9. 网络安全实验4 SQL注入攻击
  10. ArcGIS与地理加权回归GWR【一】