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

iOS 地图SDK

百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

改变地图缩放等级

地图的缩放级别的范围是[3-19],调用MBKMapView的setZoomLevel方法设置地图的缩放级别,用来缩放地图。示例代码如下:

 [_mapView setZoomLevel:17.5];
设置所有覆盖物在屏幕内显示

在屏幕内显示所有annotation

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

根据polyline设置地图范围,可以将polyline完整的显示在屏幕内

//根据polyline设置地图范围
- (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);
    [_mapView setVisibleMapRect:rect];
}
设置地图操作区域距屏幕的边界

v2.10.0起,BMKMapView 新增属性,新增了mapPadding方法,支持围绕地图边缘添加内边距。

地图继续充满整个屏幕,设置后,会根据mapPadding调整logo、比例尺、指南针的位置,以及地图中心点targetScreenPt(BMKMapStatus.targetScreenPt)。

///地图预留边界,默认:UIEdgeInsetsZero。

@property (nonatomic) UIEdgeInsets mapPadding;

mapPadding设置方法如下:

// paddingLeft、 paddingTop、 paddingRight、 paddingBottom  
// 表示距离屏幕左、上、右、下边距离,单位为屏幕坐标下的像素密度
_mapView.mapPadding = UIEdgeInsetsMake(0, 0, 28, 0);

其他参数设置说明

设置
updateTargetScreenPtWhenMapPaddingChanged
地图中心 即屏幕坐标targetScreenPt(BMKMapStatus.targetScreenPt) 屏幕坐标调整位置到
YES 改变 调整到设置的区域中心点
默认为NO 不改变 ---

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

ios-ffjh1.png

设置地图显示范围

setVisibleMapRect方法,支持设置地图显示范围,并使mapRect四周保留insets指定的边界区域。

地图继续充满整个屏幕,但地图会自动缩放地图层级,将地图覆盖物(Annotation、routeOverlay等) 调整在保留insets指定的边界区域内显示。

适用于应用界面上、下方有UI界面遮挡, 将路线规划结果或者覆盖物显示在指定的地图范围内的需求。

- (void) setVisibleMapRect:(BMKMapRect) mapRect
         edgePadding: (UIEdgeInsets) insets
         animated: (BOOL) animate
限制地图显示范围

v2.10.0起新增了限制地图显示范围,手机屏幕仅显示设定的地图范围,当前不支持旋转地图的情况,请与"禁用旋转手势"配合使用。

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

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

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

根据使用需要,支持设置POI的显示。

方法一:showMapPoi方法

在BMKMapView提供了控制底图标注的showMapPoi方法,默认显示底图标注。利用此属性可得到仅显示道路信息的地图,方法如下:

// 将底图标注设置为隐藏,方法如下:
_mapView.showMapPoi = NO;

运行后,底图标注被隐藏,效果如图:

方法二:个性化地图,将poilabel可见性设置为off,详见个性化地图
{
"featureType": "poilabel",
"elementType": "labels.text ",
"stylers": {
            "visibility": "off" 
            }
}  

ios-ffjh1.png