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

坐标介绍

国内主流坐标系类型

主要有以下三种

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

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

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

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

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

1. 国内(包括港澳台),输入、输出默认使用BD09坐标。自iOS v3.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. 自动坐标转换方法: 自iOSv3.3起,支持一次声明GCJ02坐标类型,全应用内自动执行GCJ02到BD09的坐标转换,即直接输入GCJ02坐标,返回GCJ02坐标。

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

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

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

转换方式如下:

CLLocationCoordinate2D coor = CLLocationCoordinate2DMake(39.90868, 116.3956);//原始坐标
 
//转换国测局坐标(google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标)至百度坐标
NSDictionary* testdic = BMKConvertBaiduCoorFrom(coor,BMK_COORDTYPE_COMMON);
 
//转换WGS84坐标至百度坐标(加密后的坐标)
testdic = BMKConvertBaiduCoorFrom(coor,BMK_COORDTYPE_GPS);
 
NSLog(@"x=%@,y=%@",[testdic objectForKey:@"x"],[testdic objectForKey:@"y"]);
//解密加密后的坐标字典
 
CLLocationCoordinate2D baiduCoor = BMKCoorDictionaryDecode(testdic);//转换后的百度坐标

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

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

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

// 要设置坐标类型,请先启动BaiduMapManager
   _mapManager = [[BMKMapManager alloc]init];
/**
     *百度地图SDK所有接口均支持百度坐标(BD09)和国测局坐标(GCJ02),用此方法设置您使用的坐标类型.
     *默认是BD09(BMK_COORDTYPE_BD09LL)坐标. 
     *如果需要使用GCJ02坐标,需要设置CoordinateType为:BMK_COORDTYPE_COMMON.
     */
 if ([BMKMapManager setCoordinateTypeUsedInBaiduMapSDK:BMK_COORDTYPE_COMMON]) {
        NSLog(@"经纬度类型设置成功");
    } else {
        NSLog(@"经纬度类型设置失败");
    }

注意事项


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

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