前言:我在用GPS获取点在百度上描的时候,发现坐标有偏移,还很厉害,没有十万八千里,也有二百五了。PS:用百度的坐标,是木有偏移的。(哇咔咔,我也是才发现,坐标有好多啊,不是我因为的地理学上的坐标,就那一个概念。后面还会提到,goole的坐标,高德的坐标。)你若想问我,为啥要用GPS,而不直接采用百度的。哈哈,本宝宝心里也苦,也想简单的搞。结果。。唉,各种梗,非得强迫我使用原生的GPS定位。若是,此次demo成功,本宝宝补上一篇解释一下,遇到的这个大坑。
遇到的场景:原生的GPS坐标,直接在百度上绘制,发生很大偏移。
解决办法:在百度官方找到了,坐标转换的代码(你问我为啥要转换,好吧,上面忘了说了,不过是咋天朝觉得,这样做安全些。具体内幕,自行百度)
api地址:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/tool#.E5.9D.90.E6.A0.87.E8.BD.AC.E6.8D.A2
我的部分代码:
// 初始化地图
mMapView = (MapView) findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
//设定中心点坐标
LatLng centerpos = new LatLng(30.459172,114.427361);
// 将GPS设备采集的原始GPS坐标转换成百度坐标
CoordinateConverter converter = new CoordinateConverter();
converter.from(CoordType.GPS);
// sourceLatLng待转换坐标
converter.coord(centerpos);
LatLng desLatLng = converter.convert();
//地图状态创建者
MapStatus.Builder builder = new MapStatus.Builder();
//设定中心
builder.target(desLatLng).zoom(17.0f);
//改变地图状态
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
mBaiduMap.setIndoorEnable(true);