全部服务产品
开发者频道
定价
登录
坐标转换
下载开发文档
坐标系类型

目前国内主流坐标系类型主要有三种:WGS84、GCJ02、BD09;

WGS84

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

GCJ02

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

BD09

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

百度地图SDK使用的坐标类型
百度地图SDK在国内(包括港澳台),输入、输出默认使用BD09坐标;注意:定位SDK默认输出是使用GCJ02坐标。
百度地图SDK支持一次全局声明为GCJ02坐标类型,即全应用支持输入GCJ02坐标,返回GCJ02坐标。
海外地区,输入为WGS84坐标。
为什么需要转换坐标

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

例如:

在国内(包括港澳台):POI使用WGS84或GCJ02坐标数值,直接显示在百度地图上,POI展示位置就会偏移,因此通过其他坐标(WGS84、GCJ02)调用服务时,需先将其他坐标转换为BD09,再访问百度地图数据。
在国外:POI使用WGS84坐标数值,则无需转换,百度地图国外即使用WGS84坐标。
非百度坐标系,如何转换成百度坐标系
通用坐标转换方法: 手动将输入的WGS84、GCJ02坐标转换为BD09。适用于所有使用百度地图的开发者,是转换为百度BD09坐标的官方基础算法。
自动坐标转换方法:支持一次全局声明GCJ02坐标类型,全应用内会自动执行GCJ02到BD09的坐标转换,即直接输入GCJ02坐标,返回GCJ02坐标。
通用经纬度坐标转换方法

开发者可以自行转换坐标类型,支持WGS84LL->BD09LL, GCJ02LL->BD09LL, BD09LL->GCJ02LL的经纬度坐标转换。

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

转换方法如下:

//坐标转换需导入工具功能包BaiduMapAPI_Utils.framework
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
// 国测局坐标类型的原始坐标
CLLocationCoordinate2D gcj02Coord = CLLocationCoordinate2DMake(39.90868, 116.3956);
// 转为百度经纬度类型的坐标
CLLocationCoordinate2D bd09Coord = BMKCoordTrans(gcj02Coord, BMK_COORDTYPE_COMMON, BMKCOORDTYPE_BD09LL);
声明全局坐标类型

全局设置地图SDK与开发者交互时的坐标类型。地图SDK默认使用BD09LL(BMK_COORDTYPE_BD09LL)坐标。如需使用GCJ02坐标,传入参数值为BMK_COORDTYPE_COMMON即可。本方法不支持传入WGS84(BMK_COORDTYPE_GPS)坐标。

开发者通过调用设置全局坐标方法(setCoordinateTypeUsedInBaiduMapSDK)设置的全局坐标类型后,意味着开发者和地图SDK约定传入和返回的坐标类型均为设置的类型;比如:定位传入的坐标,检索返回的坐标。

设置方法如下:

//设置为GCJ02坐标
[BMKMapManager setCoordinateTypeUsedInBaiduMapSDK: BMK_COORDTYPE_COMMON];
注意:请在AppDelegate中设置全局坐标,设置后请严格遵守约定,否则会出现经纬度与地图上展示的不一致的问题。未设置此项请确保传入坐标均为BD09LL(百度经纬度坐标)

上一篇

骑行行前多路线

下一篇

距离计算

本篇文章对您是否有帮助?