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

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
更新时间:2020-06-23
坐标系类型

目前国内主流坐标系类型主要有三种: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的经纬度坐标转换。

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

转换方法如下:

Objective-C
Swift
//坐标转换需导入工具功能包BaiduMapAPI_Utils.framework
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
// 国测局坐标类型的原始坐标
CLLocationCoordinate2D gcj02Coord = CLLocationCoordinate2DMake(39.90868, 116.3956);
// 转为百度经纬度类型的坐标
CLLocationCoordinate2D bd09Coord = BMKCoordTrans(gcj02Coord, BMK_COORDTYPE_COMMON, BMKCOORDTYPE_BD09LL);
//在桥接头文件BMKSwiftDemo-Bridging-Header中添加坐标转换需导入工具功能包BaiduMapAPI_Utils.framework
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>
// 国测局坐标类型的原始坐标
let gcj02Coord = CLLocationCoordinate2DMake(39.90868, 116.3956)
// 转为百度经纬度类型的坐标
let bd09Coord = BMKCoordTrans(gcj02Coord, BMK_COORD_TYPE.COORDTYPE_COMMON, BMK_COORD_TYPE.COORDTYPE_BD09LL)
声明全局坐标类型

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

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

设置方法如下:

Objective-C
Swift
//设置为GCJ02坐标
[BMKMapManager setCoordinateTypeUsedInBaiduMapSDK: BMK_COORDTYPE_COMMON];
BMKMapManager.setCoordinateTypeUsedInBaiduMapSDK(BMK_COORD_TYPE.COORDTYPE_COMMON)

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

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消