关于android定位的坐标系问题
按照正常的思路,我们通过GPS或者基站定位等方式获取到经纬度信息后,把它放到地图上,就能够完成定位。但实际上,我们很有可能会在实际操作中发现,我们的定位出现了较大的偏移。这是因为我国出于国家安全(或者¥@#%¥##)的考虑,会将所有的电子地图经行加偏处理,由真实的地理坐标系又称地球坐标系(WGS84)转换为火星坐标系(GCJ02)。这就是我们定位出现偏移的原因,也是坐标系问题产生的根源
那么,我们要怎样处理坐标系问题呢。就以我们常用的百度与高德地图api为例来说明。
百度地图的坐标系是在火星坐标系的基础上又自行加密的BD09坐标系,
高德地图的坐标系是常见的火星坐标系GCJ02
使用android.location获取的经纬度,或者是通过手持或车载的GPS终端获取的经纬度,那就是属于WGS84的真实的地理坐标,这时候,直接在百度或者高德地图上显示是会出现偏移的
那么,遇到经纬度与地图的坐标系不相符的情况下,怎么办呢?最优的办法就是调用你所使用的地图的服务商提供的坐标系转换接口,有可能是付费接口。不推荐使用网上流传甚广的地球坐标系与火星坐标系转换算法,实测误差较大。如果,实在没有办法的话,在小范围内,给经纬度加一个固定的修正值,也勉强可用。注意,是小范围,因为加偏虽然不是线性的,但是一定范围的的偏移量不会相差太大,通过一个固定的修正值,还是能够在小范围内提高定位精度的。至于这个范围怎么确定,我也不知道...
总结:
WGS84坐标系:即地球坐标系,国际上通用的坐标系。
GCJ02坐标系:即火星坐标系,WGS84坐标系经加密后的坐标系。
BD09坐标系:即百度坐标系,GCJ02坐标系经加密后的坐标系。
搜狗坐标系、图吧坐标系等,估计也是在GCJ02基础上加密而成的。
二、各个地图API采用的坐标系
| API | 坐标系 |
| 百度地图API | 百度坐标 |
| 腾讯搜搜地图API | 火星坐标 |
| 搜狐搜狗地图API | 搜狗坐标* |
| 阿里云地图API | 火星坐标 |
| 图吧MapBar地图API | 图吧坐标 |
| 高德MapABC地图API | 火星坐标 |
| 灵图51ditu地图API | 火星坐标 |
关于android定位的坐标系问题的更多相关文章
- android 定位的四种方式
[原文] 开发中对于地图及地理位置的定位是我们经常要用地,地图功能的使用使得我们应用功能更加完善,下面总结了一下网络中现有对于介绍android定位的4种方式,希望对大家有帮助: android 定 ...
- Android定位功能
不说废话,直接说说实现android定位有关的API吧. 这些API都在android.location包下,一共有三个接口和八个类.它们配合使用即可实现定位功能. 三个接口: GpsStatus.L ...
- Android定位功能(二)
在前文Android定位功能(一)中,已经大致介绍了一下在Android平台中,和定位功能相关的类,并举例获取了位置信息.但是前文是基于Criteria定制了一个标准,通过getBestProvide ...
- Android定位测试(深坑)
问题:我们是一个海外app,市场部去马来西亚打开那边的市场,发现了一个问题,就是我们的app定位有问题,还是成都的定位,主要原因是在马来西亚使用这个app,请求中带的经纬度参数是成都的,导致服务器返回 ...
- android 定位的几种方式介绍
[地理位置] android 定位的几种方式介绍 开发中对于地图及地理位置的定位是我们经常要用地,地图功能的使用使得我们应用功能更加完善,下面 www.androidkaifa.com 总结了一下网络 ...
- 六 APPIUM Android 定位方式
文本转自:http://www.cnblogs.com/sundalian/p/5629500.html APPIUM Android 定位方式 1.定位元素应用元素 1.1通过id定位元素 An ...
- 发现最新版百度Android 定位SDK v6.1.3 网络定位bug
对于百度地图已经实在忍无可忍了,实验室两年以前的一个项目用到了百度地图,以前师兄毕业了,我来维护这个破项目,百度地图推出新版本出来后,老版本的api不能用了,不能做到向下兼容吗?换掉少量的api也就算 ...
- Appium学习路—Android定位元素与操作
一.常用识别元素的工具 uiautomator:Android SDK自带的一个工具,在tools目录下 monitor:Android SDK自带的一个工具,在tools目录下 Appium Ins ...
- 目前主流的Android定位有如下几种:
1.通过GPS模块 GPS方式准确度是最高的,但是它的缺点也非常明显:1,比较耗电:2,绝大部分用户默认不开启GPS模块:3,从GPS模块启动到获取第一次定位数据,可能需要比较长的时间:4,室内几乎无 ...
随机推荐
- 解决libstdc++.so.5问题
./bowtie2-buildbowtie2-build: error while loading shared libraries: libtinfo.so.5: cannot open share ...
- DataTable某一列的最大值
.datatable.compute("max(列名)","") eg: int max_Idx_Number = 1; int.TryParse(C ...
- note,路况,计算
note,路况,计算
- 【Unity笔记】将角色的碰撞体朝向鼠标点击方向——角色朝向鼠标
int floorMask; // 自动寻路层 void Awake() { floorMask = LayerMask.NameToLayer("Floor"); } void ...
- [shell]shell脚本传入不固定参数的写法,如--help等
最近在调试一个wifi模块,需要传一些不固定的参数,一下一个参数解析的函数可以搞定这个事情,里面内容好多部分是从一个example中剽窃而来(窃喜) #!/bin/bash # writen by a ...
- 基于at91sam9g10的工控板
1 eth0: 片选 NCS2 中断 PC7 复位 PC6 2 eth1: 片选 NCS3 中断 PC5 复位 PC4 3 扩展输入GPIO0-7: PB27 PB26 PB9 PB8 PB7 PB5 ...
- uboot中CMD的实现
CMD配置位于config_cmd_default.h configs/at91/sam9g10ek.h 头文件位于include/command.h 41 struct cmd_tbl_s { ...
- iOS彩票项目--第四天,新特性界面搭建,UICollectionViewController的初次使用
一.新特性界面搭建的思路: 在AppDelegate加载主窗体的时候进行判断程序版本号,直接进入程序或者进入新特性展示界面 取出当前的版本号,与旧的版本号相比较(旧的版本号在进入程序的时候存起来 =& ...
- Web API(四):Web API参数绑定
在这篇文章中,我们将学习Web API如何将HTTP请求数据绑定到一个操作方法的参数中. 操作方法在Web API控制器中可以有一个或多个不同类型的参数.它可以是基本数据类型或复杂类型.Web API ...
- Entity Framework应用:Loading Entities
Entity Framework允许控制对象之间的关系,在使用EF的过程中,很多时候我们会进行查询的操作,当我们进行查询的时候,哪些数据会被加载到内存中呢?所有的数据都需要吗?在一些场合可能有意义,例 ...