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

WebAPI文档全面上新

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

体验新版
更新时间:2023-01-06
设置所有覆盖物在屏幕内显示

在屏幕内显示所有annotation

/**
 *设置地图使显示区域显示所有annotations,如果数组中只有一个则直接设置地图中心为annotation的位置
 *@param annotations 指定的标注
 *@param animated 是否启动动画
 */
- (void)showAnnotations:(NSArray *)annotations animated:(BOOL)animated;

将当前polyline完整的显示在屏幕内

Objective-C
Swift
- (void)mapViewFitPolyLine:(BMKPolyline *) polyLine {
    CGFloat ltX, ltY, rbX, rbY;
    if (polyLine.pointCount < 1) {
        return;
    }
    BMKMapPoint pt = polyLine.points[0];
    ltX = pt.x, ltY = pt.y;
    //左上方的点lefttop坐标(ltX,ltY)
    rbX = pt.x, rbY = pt.y;
    //右底部的点rightbottom坐标(rbX,rbY)
    for (int i = 1; i < polyLine.pointCount; i++) {
        BMKMapPoint pt = polyLine.points[i];
        if (pt.x < ltX) {
            ltX = pt.x;
        }
        if (pt.x > rbX) {
            rbX = pt.x;
        }
        if (pt.y < ltY) {
            ltY = pt.y;
        }
        if (pt.y > rbY) {
            rbY = pt.y;
        }
    }
    BMKMapRect rect;
    rect.origin = BMKMapPointMake(ltX , ltY);
    rect.size = BMKMapSizeMake(rbX - ltX, rbY - ltY);
    //设置padding
    UIEdgeInsets padding = UIEdgeInsetsMake(20, 10, 20, 10);
    [mapView fitVisibleMapRect:rect edgePadding:padding withAnimated:YES];
}
//根据polyline设置地图范围
func mapViewFitPolyline(_ polyline: BMKPolyline, _ mapView: BMKMapView) {
    var leftTop_x: Double = 0
    var leftTop_y: Double = 0
    var rightBottom_x: Double = 0
    var rightBottom_y: Double = 0
    if polyline.pointCount < 1 {
        return
    }
    let pt: BMKMapPoint = polyline.points[0]
    leftTop_x = pt.x
    leftTop_y = pt.y
    //左上方的点lefttop坐标(leftTop_x,leftTop_y)
    rightBottom_x = pt.x
    rightBottom_y = pt.y
    
    for index in 1..<polyline.pointCount {
        let point: BMKMapPoint = polyline.points[Int(index)]
        if point.x < leftTop_x {
            leftTop_x = point.x
        }
        if point.x > rightBottom_x {
            rightBottom_x = point.x
        }
        if point.y < leftTop_y {
            leftTop_y = point.y
        }
        if point.y > rightBottom_y {
            rightBottom_y = point.y
        }
    }
    var rect: BMKMapRect = BMKMapRect()
    rect.origin = BMKMapPointMake(leftTop_x, leftTop_y)
    rect.size = BMKMapSizeMake(rightBottom_x - leftTop_x, rightBottom_y - leftTop_y)
    let padding: UIEdgeInsets = UIEdgeInsets.init(top: 20, left: 10, bottom: 20, right: 10)
    mapView.fitVisibleMapRect(rect, edgePadding: padding, withAnimated: true)
}
设置地图操作区域距屏幕的边界

用户可以通过BMKMapView的mapPadding属性来添加围绕地图边缘的内边距,设置后,地图仍充满整个屏幕,会根据mapPadding调整logo、比例尺、指南针的位置,以及地图中心点。默认为UIEdgeInsetsZero。

mapPadding设置示例代码如下:

Objective-C
Swift
// 表示距离屏幕上、左、下、右边距离,单位为屏幕坐标下的像素密度
_mapView.mapPadding = UIEdgeInsetsMake(0, 0, 44, 0);
// 表示距离屏幕上、左、下、右边距离,单位为屏幕坐标下的像素密度
mapView?.mapPadding = UIEdgeInsets.init(top: 0, left: 0, bottom: 44, right: 0)

设置后效果如下:

fangfa001.png

注意:按照百度地图API使用条款您的应用不得删除或遮盖 百度地图Logo或版权声明。 地图内边距允许您在必要时重新定位这些元素。 如果您在地图底部显示自定义 UI,请在地图底部添加内边距,以使百度地图Logo和法律声明始终可见。

设置地图显示范围

用户可以通过BMKMapView的setVisibleMapRect方法设置地图显示范围,并使mapRect四周保留insets指定的边界区域。设置后地图继续充满整个屏幕,但地图会自动缩放地图层级,将地图覆盖物(Annotation、routeOverlay等) 调整在保留insets指定的边界区域内显示。适用于应用界面上、下方有UI界面遮挡, 将路线规划结果或者覆盖物显示在指定的地图范围内的需求。

设置地图显示范围示例代码如下:

Objective-C
Swift
//设定地图的显示范围,并使mapRect四周保留insets指定的边界区域
[_mapView setVisibleMapRect:BMKMapRectMake(32995300, 35855667, 1300, 1900) edgePadding:UIEdgeInsetsMake(20, 0, 40, 0) animated:YES];
//设定地图的显示范围,并使mapRect四周保留insets指定的边界区域
mapView?.setVisibleMapRect(BMKMapRectMake(32995300, 35855667, 1300, 1900), edgePadding:UIEdgeInsets.init(top: 20, left: 0, bottom: 40, right: 0), animated: true)
限制地图显示范围

用户可以通过BMKMapView的limitMapRegion属性来限制地图显示范围,设置后手机屏幕仅显示设定的地图范围,当前不支持旋转地图的情况,请与"禁用旋转手势"配合使用。

注意:当限制的地图范围的宽或者高,在指定层级时小于屏幕的大小,地图将自动放大层级显示,以控制显示范围。

使用场景:针对需要展示部分固定范围的地图,如希望设置仅显示北京市区地图,可使用此功能。

limitMapRegion设置示例代码如下:

Objective-C
Swift
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(39.924257, 116.403263);
BMKCoordinateSpan span = BMKCoordinateSpanMake(0.038325, 0.028045);
_mapView.limitMapRegion = BMKCoordinateRegionMake(center, span);////限制地图显示范围
_mapView.rotateEnabled = NO;//禁用旋转手势
mapView?.limitMapRegion = BMKCoordinateRegionMake(CLLocationCoordinate2DMake(39.924257, 116.403263), BMKCoordinateSpanMake(0.038325, 0.028045))
mapView?.isRotateEnabled = false //禁用旋转手势
控制底图标注

百度地图SDK支持设置底图POI的是否显示,用户可以通过BMKMapView的showMapPoi属性来控制地图标注是否显示,默认显示底图标注。利用此属性可得到仅显示道路信息的地图。

showMapPoi设置示例代码如下:

Objective-C
Swift
// 将底图标注设置为隐藏
_mapView.showMapPoi = NO;
// 将底图标注设置为隐藏
mapView?.showMapPoi = false

设置后效果如下:

IMG_0295.PNG

地图POI标签控制

百度地图SDK支持根据标签类型控制地图上POI标签的是否显示,用户可以通过BMKMapView的getPoiTagEnable接口来实现,默认全部显示。 相关接口

Objective-C
/// 用于控制poi标签显示的类别枚举
typedef enum {
    kBMKPoiTagTypeAll,        ///< 显示poi标签 / 屏蔽所有poi标签
    kBMKPoiTagTypeEpidemic,   ///< 疫情标签
    kBMKPoiTagTypeTravel,     ///< 旅游出行标签
    kBMKPoiTagTypeShop        ///< 店铺标签
}BMKPoiTagType;
    
/// 是否展示底图poi标签 since 6.5.5
/// @return bool
- (BOOL)getPoiTagEnable:(BMKPoiTagType)poiTagType;

/// 是否展示底图poi标签 since 6.5.5
/// @param enable 是否展示
/// @param poiTagType 标签类别
- (void)setPoiTagEnable:(BOOL)enable poiTagType:(BMKPoiTagType)poiTagType;

使用方式:

Objective-C
Swift
/// 创建地图后设置,关闭地图上所有poi标签
[_mapview setPoiTagEnable:NO poiTagType:kBMKPoiTagTypeAll];
/// 创建地图后设置,关闭地图上所有poi标签
mapView.setPoiTagEnable(false, poiTagType:kBMKPoiTagTypeAll)

效果对比图如下:

showPng.jpeg

showPng1.jpeg

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消