浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
 
第1行: 第1行:
 
{{iossdk-sidebar}}
 
{{iossdk-sidebar}}
<div class="bluetitle"><div class="services-title-text">展示定位</div></div>
+
<div class="wrap-time-sdk" style="margin-top: -15px;">更新时间:2020-06-23</div><div class="bluetitle"><div class="services-title-text">展示定位</div></div>
 
定位的展示与定位的获取方式无关。展示定位功能位于“基础地图(Map)”功能模块。 控制定位展示的核心代码如下:
 
定位的展示与定位的获取方式无关。展示定位功能位于“基础地图(Map)”功能模块。 控制定位展示的核心代码如下:
 
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//以下_mapView为BMKMapView对象
 
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//以下_mapView为BMKMapView对象
第91行: 第91行:
 
</div></div>
 
</div></div>
 
效果如下图:
 
效果如下图:
 
+
<div class="urltoimg" style="width: 260px;">
http://mapopen-pub-iossdk.cdn.bcebos.com/newIos/xsdw002.png
+
https://mapopen-website-wiki.cdn.bcebos.com/demos/staticsdk/iosimg/IMG_0287.PNG
 
+
</div>
 
'''{{bluepoint}}定位方向模式'''
 
'''{{bluepoint}}定位方向模式'''
  
第111行: 第111行:
 
</div></div>
 
</div></div>
 
效果如下图:
 
效果如下图:
 
+
<div class="urltoimg" style="width: 260px;">
http://mapopen-pub-iossdk.cdn.bcebos.com/newIos/xsdw004.png
+
https://mapopen-website-wiki.cdn.bcebos.com/demos/staticsdk/iosimg/IMG_0288.PNG
 
+
</div>
 
'''{{bluepoint}}定位罗盘模式'''
 
'''{{bluepoint}}定位罗盘模式'''
  
第121行: 第121行:
 
</div></div>
 
</div></div>
 
效果如下图:
 
效果如下图:
 
+
<div class="urltoimg" style="width: 260px;">
http://mapopen-pub-iossdk.cdn.bcebos.com/newIos/xsdw005.png
+
https://mapopen-website-wiki.cdn.bcebos.com/demos/staticsdk/iosimg/IMG_0289.PNG
<div class="bluetitle"><div class="services-title-text">定位图标和精度圈自定义设置</div></div>
+
</div><div class="bluetitle"><div class="services-title-text">定位图标和精度圈自定义设置</div></div>
 
BMKLocationViewDisplayParam类提供了定位图层的配置项,可以通过BMKMapView的updateLocationViewWithParam方法自定义定位图层,代码示例如下:
 
BMKLocationViewDisplayParam类提供了定位图层的配置项,可以通过BMKMapView的updateLocationViewWithParam方法自定义定位图层,代码示例如下:
 
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">// self.mapView是BMKMapView对象
 
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">// self.mapView是BMKMapView对象
第163行: 第163行:
 
</div></div>
 
</div></div>
 
效果如下图:
 
效果如下图:
 
+
<div class="urltoimg" style="width: 260px;">
http://mapopen-pub-iossdk.cdn.bcebos.com/newIos/xsdw007.png
+
https://mapopen-website-wiki.cdn.bcebos.com/demos/staticsdk/iosimg/IMG_0290.PNG
 +
</div>

2020年6月29日 (一) 08:35的最后版本

更新时间:2020-06-23
展示定位

定位的展示与定位的获取方式无关。展示定位功能位于“基础地图(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

精度圈设置

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

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消