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

WebAPI文档全面上新

新增示例代码、在线运行等功能,帮助您实现快速接入,前往体验吧!

体验新版
更新时间:2023-04-06
展示定位

定位的展示与定位的获取方式无关。展示定位功能位于“基础地图(Map)”功能模块。 控制定位展示的核心代码如下:

Objective-C
Swift
//以下_mapView为BMKMapView对象
//显示定位图层
_mapView.showsUserLocation = YES;
//显示定位图层
mapView?.showsUserLocation = true

效果图如下:

xsdw001.png


获取定位信息

iOS地图SDK 4.2.0版本后不再提供Location定位组件,百度地图开放平台在系统定位基础之上,为广大开发者全新提供了iOS端独立的定位SDK产品, 欢迎广大开发者的使用。 在定位SDK的定位结果回调方法中,调用地图SDK的相应方法,更新地图上展示的定位图标的位置和朝向等显示效果,具体核心代码如下:(完整代码请参考Demo中的BMKLocationModePage)

Objective-C
Swift
@property (nonatomic, strong) BMKUserLocation *userLocation; //当前位置对象
//由于以下代理方法中分别且仅只返回heading或location信息,请开发者务必将该对象定义为全局类型,避免在以下回调用使用局部的BMKUserLocation对象,导致出现定位显示错误位置的情况。
// 定位SDK中,方向变更的回调
- (void)BMKLocationManager:(BMKLocationManager *)manager didUpdateHeading:(CLHeading *)heading {
if (!heading) {
return;
}
if (!self.userLocation) {
self.userLocation = [[BMKUserLocation alloc] init];
}
self.userLocation.heading = heading;
[self.mapView updateLocationData:self.userLocation];
}

// 定位SDK中,位置变更的回调
- (void)BMKLocationManager:(BMKLocationManager *)manager didUpdateLocation:(BMKLocation *)location orError:(NSError *)error {
if (error) {
NSLog(@"locError:{%ld - %@};", (long)error.code, error.localizedDescription);
}
if (!location) {
return;
}
if (!self.userLocation) {
self.userLocation = [[BMKUserLocation alloc] init];
}
self.userLocation.location = location.location;
[self.mapView updateLocationData:self.userLocation];
}
//MARK:BMKLocationManagerDelegate
/**
 @brief 该方法为BMKLocationManager提供设备朝向的回调方法
 @param manager 提供该定位结果的BMKLocationManager类的实例
 @param heading 设备的朝向结果
 */
func bmkLocationManager(_ manager: BMKLocationManager, didUpdate heading: CLHeading?) {
    NSLog("用户方向更新")
    userLocation.heading = heading
    mapView.updateLocationData(userLocation)
}

/**
 @brief 连续定位回调函数
 @param manager 定位 BMKLocationManager 类
 @param location 定位结果,参考BMKLocation
 @param error 错误信息。
 */
func bmkLocationManager(_ manager: BMKLocationManager, didUpdate location: BMKLocation?, orError error: Error?) {
    if let _ = error?.localizedDescription {
        NSLog("locError:%@;", (error?.localizedDescription)!)
    }
    userLocation.location = location?.location
    //实现该方法,否则定位图标不出现
    mapView.updateLocationData(userLocation)
}

/**
 @brief 当定位发生错误时,会调用代理的此方法
 @param manager 定位 BMKLocationManager 类
 @param error 返回的错误,参考 CLError
 */
func bmkLocationManager(_ manager: BMKLocationManager, didFailWithError error: Error?) {
    NSLog("定位失败")
}

其他定位相关的开发指南,请参考iOS定位SDK文档注意:iOS定位SDK返回纬度默认为国测局坐标系BMKLocationCoordinateTypeGCJ02,iOS地图SDK默认全局坐标系为百度坐标系BMKLocationCoordinateTypeBMK09LL

定位模式设置

BMKMapView的定位模式(userTrackingMode)有4种。

普通定位模式

显示我的位置,我的位置图标和地图都不会旋转

Objective-C
Swift
_mapView.userTrackingMode = BMKUserTrackingModeNone; 
mapView?.userTrackingMode = BMKUserTrackingModeNone

效果如下图:

IMG_0287.PNG

定位方向模式

显示我的位置,我的位置图标会旋转,地图不会旋转

Objective-C
Swift
_mapView.userTrackingMode = BMKUserTrackingModeHeading; 
mapView?.userTrackingMode = BMKUserTrackingModeHeading

效果如下图:

xsdw003.png

定位跟随模式

我的位置始终在地图中心,我的位置图标会旋转,地图不会旋转

Objective-C
Swift
_mapView.userTrackingMode = BMKUserTrackingModeFollow; 
mapView?.userTrackingMode = BMKUserTrackingModeFollow

效果如下图:

IMG_0288.PNG

定位罗盘模式

我的位置始终在地图中心,我的位置图标和地图都会跟着旋转

Objective-C
Swift
_mapView.userTrackingMode = BMKUserTrackingModeFollowWithHeading; 
mapView?.userTrackingMode = BMKUserTrackingModeFollowWithHeading

效果如下图:

IMG_0289.PNG

定位图标和精度圈自定义设置

BMKLocationViewDisplayParam类提供了定位图层的配置项,可以通过BMKMapView的updateLocationViewWithParam方法自定义定位图层,代码示例如下:

Objective-C
Swift
// self.mapView是BMKMapView对象
BMKLocationViewDisplayParam *param = [[BMKLocationViewDisplayParam alloc] init];
//根据配置参数更新定位图层样式
[self.mapView updateLocationViewWithParam:param];
let param: BMKLocationViewDisplayParam = BMKLocationViewDisplayParam.init()
//根据配置参数更新定位图层样式
 mapView.updateLocationView(with: param)

定位图标设置

Objective-C
Swift
//定位图标名称,需要将该图片放到 mapapi.bundle/images 目录下
param.locationViewImgName = @"icon_nav_bus";
//用户自定义定位图标,V4.2.1以后支持
param.locationViewImage = [UIImage imageNamed:@"location.png"];
//定位图标名称,需要将该图片放到 mapapi.bundle/images 目录下
param.locationViewImgName = "icon_nav_bus"
//用户自定义定位图标,V4.2.1以后支持
param.locationViewImage = UIImage(named: "location.png")

效果图如下:

xsdw006.png

Since 6.5.7 iOS地图SDK新增整体自定义和箭头模式自定义,支持gif动画。
新增接口:

旧接口:只支持全局整体设置图标
/// 用户自定义定位图标,V4.2.1以后支持
@property (nonatomic, strong) UIImage *locationViewImage;

新增接口:
///是否是定位图标箭头模式自定义,YES:箭头模式自定义, NO:整体自定义,默认NO
@property (nonatomic, assign) BOOL isLocationArrowModeCustom;

/* 以下为定位图标整体自定义,自定义图片和gif图二选一,Gif图优先级大于图片*/
///新版用户自定义定位图标,since 6.5.7
@property (nonatomic, strong) UIImage *locationViewImageNew;
///定位图标整体自定义gif图文件路径,since 6.5.7
@property (nonatomic, copy) NSString *locationViewGifImageFilePath;
///定位图标整体自定义大小缩放系数,默认为1,可设置范围0.5~2.0,基于固定尺寸CGSizeMake(30, 30)缩放,since 6.5.7
@property (nonatomic, assign) CGFloat locationViewImageSizeScale;
/// 定位图标整体样式自定义呼吸效果,默认为NO,since 6.5.7
@property (nonatomic, assign) BOOL breatheEffectOpenForWholeStyle;

/* 以下为箭头模式定位图标自定义,可分别自定义中心圆点图片和箭头图片,中心图标自定义图片和gif图二选一,Gif图优先级大于图片*/
///箭头模式定位图标中心图片,无方向,since 6.5.7
@property (nonatomic, strong) UIImage *locationViewCenterImage;
///箭头模式定位图标中心圆点gif图文件路径,无方向,since 6.5.7
@property (nonatomic, copy) NSString *locationViewCenterGifImageFilePath;
///箭头模式定位图标中心圆点图片大小缩放系数,默认为1,可设置范围0.5~2.0,基于固定尺寸CGSizeMake(30, 30)缩放,since 6.5.7
@property (nonatomic, assign) CGFloat locationViewCenterImageSizeScale;
///箭头模式定位图标周边箭头轮廓图片,箭头向上为正,since 6.5.7
@property (nonatomic, strong) UIImage *locationViewAroundArrowsImage;
///箭头模式定位图标周边箭头轮廓图片大小缩放系数,默认为1,可设置范围0.2~3.0,基于图片大小缩放,since 6.5.7
@property (nonatomic, assign) CGFloat locationViewAroundArrowsImageSizeScale;
/// 箭头样式定位图标呼吸效果,默认为YES,since 6.5.7
@property (nonatomic, assign) BOOL breatheEffectOpenForArrowsStyle;

1.整体自定义图标

param.locationViewImageNew = [UIImage imageNamed:@"icon_car"];
运行效果:
https://mapopen-pub-iossdk.cdn.bcebos.com/map/v6_5_7/location_1.MP4

2.整体自定义GIF

param.locationViewGifImageFilePath = [NSString stringWithFormat:@"%@/6.gif", [NSBundle mainBundle].resourcePath];
param.locationViewImageSizeScale = 2;
运行效果:
https://mapopen-pub-iossdk.cdn.bcebos.com/map/v6_5_7/location_2.MP4

3.箭头模式图标(注:1.剪头模式不适合普通定位方式(只展示中心自定义图片,不展示箭头),仅适用于方向、跟随、罗盘方式 2.中心图片不旋转 3.默认有向内呼吸效果)

param.isLocationArrowModeCustom = YES;
param.locationViewCenterImage = [UIImageimageNamed:@"icon_car"];
param.locationViewCenterImageSizeScale = 1.5;
param.locationViewAroundArrowsImageScale = 3;
param.locationViewAroundArrowsImage = [UIImageimageNamed:@"loc_cur_outdot"];
运行效果:
https://mapopen-pub-iossdk.cdn.bcebos.com/map/v6_5_7/location_3.MP4

4.箭头模式GIF(注:1.剪头模式不适合普通定位方式(只展示中心自定义图片,不展示箭头),仅适用于方向、跟随、罗盘方式 2.中心GIF不旋转 3.默认有向内呼吸效果)

param.isLocationArrowModeCustom = YES;
param.locationViewCenterGifImageFilePath = [NSString stringWithFormat:@"%@/6.gif", [NSBundle mainBundle].resourcePath];
param.locationViewCenterImageSizeScale = 1.5;
param.locationViewAroundArrowsImageScale = 3;
param.locationViewAroundArrowsImage = [UIImageimageNamed:@"loc_cur_outdot"];
运行效果:
https://mapopen-pub-iossdk.cdn.bcebos.com/map/v6_5_7/location_4.MP4

5.无呼吸效果(默认YES,不适合普通定位方式,仅适用于方向、跟随、罗盘方式 )

param.isLocationArrowModeCustom = YES;
param.locationViewCenterGifImageFilePath = [NSString stringWithFormat:@"%@/6.gif", [NSBundle mainBundle].resourcePath];
param.locationViewCenterImageSizeScale = 1.5;
param.locationViewAroundArrowsImageScale = 3;
param.locationViewAroundArrowsImage = [UIImageimageNamed:@"loc_cur_outdot"];
param.breatheEffectOpenForArrowsStyle = NO;
运行效果:
https://mapopen-pub-iossdk.cdn.bcebos.com/map/v6_5_7/location_5.MP4

精度圈设置

Objective-C
Swift
//设置显示精度圈,默认YES
param.isAccuracyCircleShow = YES;
//精度圈 边框颜色
param.accuracyCircleStrokeColor = [UIColor colorWithRed:1 green:0 blue:0 alpha:0.5];
//精度圈 填充颜色
param.accuracyCircleFillColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:0.3];
//设置显示精度圈,默认YES
param.isAccuracyCircleShow = true
//精度圈 边框颜色
param.accuracyCircleStrokeColor = UIColor(red: 1, green: 0, blue: 0, alpha: 0.5)
//精度圈 填充颜色
param.accuracyCircleFillColor = UIColor(red: 0, green: 1, blue: 0, alpha: 0.3)

效果如下图:

IMG_0290.PNG

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消