android地图偏移谷歌中国地图偏移校正补丁,关于谷歌地图GPS偏移问题的解决办法...
因为项目需要,最近一直在研究谷歌在线地图,由于一直都是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偏移问题的解决办法...相关推荐
- 【Android】高德地图在Debug模式下运行正常但是打Release包时则闪退解决办法
[Android]高德地图在Debug模式下运行正常但是打Release包时则闪退解决办法 来源: https://blog.csdn.net/weixin_39370093/article/deta ...
- 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 异常的解决办法 ...
- android studio创建项目一直,Android Studio在创建/导入项目的时候,一直处于building “XXX”gradle project info的解决办法...
Android Studio在新建项目或者导入项目的时候,可能会一直处于building "XXX"gradle project info的状态,而且还取消不了,无奈之下只能干掉进 ...
- android虚拟器没有菜单,网易MuMu模拟器不显示Menu(菜单)键的解决办法
解决方法一: 前提:需要一个键盘 步骤: 1.直接按下键盘上的Menu键. 解决方法二: 前提:需要Root之后的文件浏览器 步骤: 1.在文件管理器中打开 /System 文件夹: 2.复制 bui ...
- 百度度地图总是提示key 验证出错 请在 AndroidManifest xml 文件中检查 key 设置解决办法
调用百度度地图总是提示key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置 logcat提示如下 01-06 10:08:37.886: E/baidumapsd ...
- Android安装包apk文件在某些版本操作系统上安装解析包出错问题的解决办法
当我们将Android升级功能的中的下载新版本apk文件存放在data/data/xxx.apk位置时,在有的些版本的手机中安装可能会出现安装包解析出错的问题,对于该问题的解决方案是提升该文件的权限. ...
- HTML字体小于12谷歌不兼容,Chrome谷歌浏览器下不支持css字体小于12px的解决办法【原创】...
先来看下 ie.火狐.谷歌浏览器下各个字体显示情况 ie下: 火狐下: 谷歌下: 从上面的图可以很明显看出谷歌下 css设置字体大小为12px及以下时,显示都是一样大小,都是默认12px; 那么网上一 ...
- sd卡linux错误检测,android系统正在准备SD卡正在检测是否有错误且SD卡无法读取解决办法...
手机android系统,也许您会碰到这样的情况. 错误提示:正在准备SD卡 正在检测是否有错误.这时sd卡(即内存卡)不能正常使用,不管手机自带的程序,还是通过usb口连接到电脑都无法识别sd卡. 这 ...
- Android 调用系统相机拍照,生命周期重走OnCreate,导致无数据的解决办法
extends:http://blog.csdn.net/b275518834/article/details/42347903 BUG具体体现为 : (1) 摄像头拍照后图片数据不一定能返回 ; o ...
- Android中ActionBar中不显示overflow(就是三个点的那个按钮)解决办法
最近写安卓想实现actionbar上的一些按钮,但是新的安卓版本似乎有问题,很难显示出那个三个点的菜单,找了很多教程,还是这个靠谱一些. 当新建android工程后,发现原来使用的ActionBar的 ...
最新文章
- IOS-开发中手势的处理
- python入门教程非常详细-python初学者怎么入门:python入门教程非常详细
- mysql一些操作个人备忘(持续更新)
- C语言模拟实现标准库函数之memcpy()
- 前端学习(2611):vuex实现增加
- 天池 在线编程 求和查找
- 常用的数学计算工具类
- 【第43题】【062题库】2019年OCP认证062考试新题
- 仿秒秒测日历页面和部分功能
- oracle 11g查隐含参数,oracle隐含参数修改与查看
- 微分中值定理——(罗尔定理、拉格朗日定理、导数极限定理、达布定理、柯西定理)
- 双一流大学王牌专业计算机,重点大学的王牌专业,双一流大学的王牌专业都有哪些?...
- 借助Jackson的JsonTypeInfo注解实现多态类的解析
- TIM腾讯聊天(即时通信 IM)(咨询客服业务)
- 终于有人把云计算、大数据和人工智能讲明白了!
- <计算机视觉 六> 深度学习目标检测模型的评估标准
- mysql 去除逗号_mysql注入之过滤逗号
- 密码爆破工具:Medusa(美杜莎)-操作说明hydra-操作说明
- 第一行代码:Android(第三版)
- 组织敏捷转型中的 HR