您当前的位置: Android SDK > 开发指南 > 坐标转换
坐标转换

坐标介绍

国内主流坐标系类型

主要有以下三种

1. WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系;

2. GCJ02:是由中国国家测绘局制订的地理信息系统的坐标系统,是由WGS84坐标系经加密后的坐标系;

3. BD09:百度坐标系,在GCJ02坐标系基础上再次加密。其中BD09ll表示百度经纬度坐标,BD09mc表示百度墨卡托米制坐标。

百度地图在国内(包括港澳台)使用的是BD09坐标;在海外地区,统一使用WGS84坐标。开发者在使用百度地图相关服务时,请注意选择。

百度地图SDK使用什么坐标类型?

1. 国内(包括港澳台),输入、输出默认使用BD09坐标。自Android v4.3起,支持一次声明为GCJ02坐标类型,全应用支持输入GCJ02坐标,返回GCJ02坐标。

2. 海外地区,输入为WGS84坐标。

为什么需要转换坐标?

百度地图的服务,国内(包括港澳台)使用BD09坐标,国外使用WGS84坐标。若使用非BD09坐标直接叠加在百度地图上,因坐标值不同,展示位置就会偏移。

举例:

1)在国内(包括港澳台):POI使用WGS84或GCJ02坐标数值,直接显示在百度地图上,POI展示位置就会偏移,因此通过其他坐标(WGS84、GCJ02)调用服务时,需先将其他坐标转换为BD09,再访问百度地图数据。

2)在国外:POI使用WGS84坐标数值,则无需转换,百度地图国外即使用WGS84坐标。

非百度坐标系,如何转换成百度坐标系?

1. 通用坐标转换方法: 手动将输入的WGS84、GCJ02坐标转换为BD09。适用于所有使用百度地图的开发者,是转换为百度BD09坐标的官方基础算法。

2. 自动坐标转换方法: 自Android v4.3起,支持一次声明GCJ02坐标类型,全应用内自动执行GCJ02到BD09的坐标转换,即直接输入GCJ02坐标,返回GCJ02坐标。

通用坐标转换方法,支持其他坐标转BD09

除了直接使用GCJ02坐标系,开发者仍可以自行转换坐标类型,将WGS84和GCJ02转换为百度BD09坐标,如未对坐标参数进行设置,默认使用BD09坐标系。

注意:请勿使用其他非官方转换方法!!!

转换方式如下:

// 将google地图、soso地图、aliyun地图、mapabc地图和amap地图// 所用坐标转换成百度坐标  
CoordinateConverter converter  = new CoordinateConverter();  
converter.from(CoordType.COMMON);  
// sourceLatLng待转换坐标  
converter.coord(sourceLatLng);  
LatLng desLatLng = converter.convert();  
 
// 将GPS设备采集的原始GPS坐标转换成百度坐标  
CoordinateConverter converter  = new CoordinateConverter();  
converter.from(CoordType.GPS);  
// sourceLatLng待转换坐标  
converter.coord(sourceLatLng);  
LatLng desLatLng = converter.convert();

自动坐标转换,支持GCJ02坐标输入/输出

自Android v4.3起,一次声明GCJ02坐标类型,全应用自动执行坐标转换,即输入GCJ02坐标,返回GCJ02坐标。

声明坐标类型的代码如下:

SDKInitializer.setCoordType(CoordType.GCJ02);//默认为BD09LL坐标

也可以获取当前使用的坐标类型:

SDKInitializer.getCoordType();//BD09LL或者GCJ02坐标

注意事项

1. 自动坐标转换方法仅适用于国内(包括港澳台地区)且输入坐标为GCJ02坐标的情况。

2. 百度地图国外即使用WGS84坐标,如需要支持海外地区,直接使用WGS84坐标访问即可,无需转换。如需要同时访问国内和国外数据,自动坐标转换方法不适用。