关键字: 百度坐标 谷歌坐标 BD-09 WGS-84 GCJ-02
国内的地图坐标并不是实际的坐标,不解释。
在实际的实现中可能会需要坐标的转换,比如以下的场景:
1,原有的地图数据来自google,现有系统改成baidu了。
2,在iphone上使用google,在android上新开发的系统使用baidu了。
为了两个系统的兼容,所以在必要时需要转换,关键是这个转换技术是不公开的,不解释。百度的SDK为了方便,提供一种把GCJ-02和WGS-84转换成百度坐标(BD-09)的方式,所以在其它地方取得的数据在百度上显示是没有问题的,但是如果想从百度取得坐标放在google上显示就比较难了。在这里提供一种变通的方式。
在百度地图中取得WGS-84坐标,调用如下方法:
BMapManager.getLocationManager().setLocationCoordinateType(
MKLocationManager.MK_COORDINATE_WGS84);
这样从百度api中取得的坐标就是WGS-84了,可是这种坐标如果显示到百度地图上就会偏移,也就是说取出一个坐标,原封不动的显示上去就偏移了,所以为了显示也是正常就需要在绘制到百度地图上之前转换成BD-09。
转换成BD-09,调用方法:
1
2
|
GeoPoint wgs84 = YOUR_WGS_84_POINT;
GeoPoint bd09 = CoordinateConvert.bundleDecode(CoordinateConvert.fromWgs84ToBaidu(wgs84));
|
这里实在不明白为何要设计成CoordinateConvert.fromWgs84ToBaidu(wgs84)返回了一个Bundle,所以还需要CoordinateConvert.bundleDecode()再转成GeoPoint。