百度坐标 谷歌坐标 BD-09 WGS-84 GCJ-02国内的地图坐标并不是实际的坐标,不解释。在实际的实现中可能会需要坐标的转换,比如以下的场景:1,原有的地图数据来自google,现有系统改成
百度坐标 谷歌坐标 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,调用方法:
GeoPoint wgs84;GeoPoint bd09 = CoordinateConvert.bundleDecode(CoordinateConvert.fromWgs84ToBaidu(wgs84));这里实在不明白为何要设计成CoordinateConvert.fromWgs84ToBaidu(wgs84)返回了一个Bundle,所以还需要CoordinateConvert.bundleDecode()再转成GeoPoint。