浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

iOS 地图SDK

百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

坐标知识简介

国内主流坐标系类型

主要有以下三种:

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

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

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

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

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

1. 百度地图SDK在国内(包括港澳台),输入、输出默认使用BD09坐标;定位SDK默认输出是使用GCJ02坐标。
自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坐标。

通用经纬度坐标转换方法

开发者可以自行转换坐标类型,支持WGS84经纬度到BD09经纬度,GCJ02经纬度到BD09经纬度,WGS84经纬度到BD09经纬度的转换。

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

转换方式如下:

// 国测局坐标类型的原始坐标
CLLocationCoordinate2D gcj02Coord = CLLocationCoordinate2DMake(39.90868, 116.3956);
// 转为百度经纬度类型的坐标
CLLocationCoordinate2D bd09Coord = BMKCoordTrans(gcj02Coord, BMK_COORDTYPE_COMMON, BMKCOORDTYPE_BD09LL);
指定全局坐标,支持GCJ02和BD09经纬度的输入/输出

自iOS V3.3版本起,支持全局设置地图SDK与开发者交互时的坐标类型。 这种设置坐标类型的方式,意味着2个方面的约定:  
1. 地图SDK认为开发者传入的所有坐标均为此类型; 
2. 所有地图SDK返回给开发者的坐标均为此类型。

设置坐标类型的代码如下:

   BMKMapManager *mapManager = [[BMKMapManager alloc] init];
   [mapManager setCoordinateTypeUsedInBaiduMapSDK:BMK_COORDTYPE_COMMON];
注意事项

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

2. 百度地图国外即使用WGS84坐标,如需要支持海外地区,直接使用WGS84坐标访问即可,无需转换。