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

iOS 地图SDK

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

弧线

用户可以根据三个有序点唯一确定一条弧线,满足您的业务需求。

1添加弧线覆盖物数据(BMKArcline)
//添加弧线覆盖物
//传入的坐标顺序为起点、途经点、终点
CLLocationCoordinate2D coords[3] = {0};
coords[0].latitude = 40.065;
coords[0].longitude = 116.124;
coords[1].latitude = 40.125;
coords[1].longitude = 116.304;
coords[2].latitude = 40.065;
coords[2].longitude = 116.404;
BMKArcline *arcline = [BMKArcline arclineWithCoordinates:coords];
[_mapView addOverlay:arcline];
2实现代理方法生成对应的View(BMKArclineView)
#pragma mark - BMKMapViewDelegate
/**
 根据overlay生成对应的BMKOverlayView

 @param mapView 地图View
 @param overlay 指定的overlay
 @return 生成的覆盖物View
 */
- (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id<BMKOverlay>)overlay
{
    if ([overlay isKindOfClass:[BMKArcline class]])
    {
        BMKArclineView *arclineView = [[BMKArclineView alloc] initWithArcline:overlay];
        arclineView.strokeColor = [UIColor blueColor];
        arclineView.lineDash = YES;
        arclineView.lineWidth = 6.0;
        return arclineView;
    }
    return nil;
}
3运行程序

效果如图:

arc001.jpg

多边形
1添加多边形覆盖物数据(BMKPolygon)
// 添加多边形覆盖物
CLLocationCoordinate2D coords[5] = {0};
coords[0].latitude = 39.965;
coords[0].longitude = 116.604;
coords[1].latitude = 39.865;
coords[1].longitude = 116.604;
coords[2].latitude = 39.865;
coords[2].longitude = 116.704;
coords[3].latitude = 39.905;
coords[3].longitude = 116.654;
coords[4].latitude = 39.965;
coords[4].longitude = 116.704;
BMKPolygon  *polygon = [BMKPolygon polygonWithCoordinates:coords count:5];
[_mapView addOverlay:polygon];
2实现代理方法生成对应的View(BMKPolygonView)
#pragma mark - BMKMapViewDelegate
/**
 根据overlay生成对应的BMKOverlayView

 @param mapView 地图View
 @param overlay 指定的overlay
 @return 生成的覆盖物View
 */
- (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id <BMKOverlay>)overlay{
    if ([overlay isKindOfClass:[BMKPolygon class]]){
        BMKPolygonView* polygonView = [[BMKPolygonView alloc] initWithOverlay:overlay];
        polygonView.strokeColor = [[UIColor alloc] initWithRed:0.0 green:0 blue:0.5 alpha:1];
        polygonView.fillColor = [[UIColor alloc] initWithRed:0 green:1 blue:1 alpha:0.2];
        polygonView.lineWidth = 2.0;
        polygonView.lineDash = YES;
		return polygonView;
    }
    return nil;
}
3运行程序

效果如图

arc002.jpg

圆形
1添加圆形覆盖物数据(BMKCircle)
// 添加圆形覆盖物
CLLocationCoordinate2D coor;
coor.latitude = 39.915;
coor.longitude = 116.404;
BMKCircle *circle = [BMKCircle circleWithCenterCoordinate:coor radius:5000];
[_mapView addOverlay:circle];
2实现代理方法生成对应的View(BMKCircleView)
#pragma mark - BMKMapViewDelegate
/**
 根据overlay生成对应的BMKOverlayView

 @param mapView 地图View
 @param overlay 指定的overlay
 @return 生成的覆盖物View
 */
- (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id <BMKOverlay>)overlay{
    if ([overlay isKindOfClass:[BMKCircle class]]){
        BMKCircleView* circleView = [[BMKCircleView alloc] initWithOverlay:overlay];
        circleView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.5];
        circleView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.5];
        circleView.lineWidth = 10.0;

        return circleView;
    }
    return nil;
}
3运行程序

效果如图:

arc003.jpg

自定义图片图层(图片覆盖物)

图片图层(GroundOverlay)又称为图片覆盖物,此功能支持在地图的指定位置上添加一张大小合适的图片。图片可随地图的平移、缩放、旋转等操作做相应的变换。 图片图层是一种特殊的Overlay, 它位于底图和底图标注层之间(即图片图层不会遮挡地图标注信息), 此外,图片图层的添加顺序不会影响其他图层(例如:POI搜索图层、我的位置图层等)的叠加关系。

1添加图片图层数据(BMKGroundOverlay)

图片图层对象初始化的方法有两种:(1)根据指定经纬度坐标生成 (2)根据指定区域生成。

//添加图片图层覆盖物(第一种:根据指定经纬度坐标生成)
CLLocationCoordinate2D coords[2] = {0};
coords[0] = CLLocationCoordinate2DMake(39.910, 116.370);
coords[1] = CLLocationCoordinate2DMake(39.950, 116.430);
//表示一个经纬度区域
BMKCoordinateBounds bound;
//东北角点经纬度坐标
bound.southWest = coords[0];
//西南角点经纬度坐标
bound.northEast = coords[1];
/**
 根据指定区域生成一个图层

 @param bounds 指定的经纬度区域
 @param icon 绘制使用的图片
 @return 新生成的BMKGroundOverlay实例
 */
BMKGroundOverlay *ground = [BMKGroundOverlay groundOverlayWithBounds:bound icon:[UIImage imageNamed:@"groundIcon.png"]];
//图片纹理透明度,最终透明度 = 纹理透明度 * alpha,取值范围为[0.0f, 1.0f],默认为1.0f
ground.alpha = 0.8;
[_mapView addOverlay:ground];

//添加图片图层覆盖物(第二种:根据指定区域生成)
CLLocationCoordinate2D coords[2] = {0};
coords[0].latitude = 39.815;
coords[0].longitude = 116.404;
coords[1].latitude = 39.915;
coords[1].longitude = 116.504;
BMKCoordinateBounds bound;
bound.southWest = coords[0];
bound.northEast = coords[1];
BMKGroundOverlay *ground2 = [BMKGroundOverlay groundOverlayWithBounds: bound
                                                                 icon:[UIImage imageNamed:@"groundIcon.png"]];
[_mapView addOverlay:ground2];
2实现代理方法返回对应的View(BMKGroundOverlayView)
#pragma mark - BMKMapViewDelegate
/**
 根据overlay生成对应的BMKOverlayView

 @param mapView 地图View
 @param overlay 指定的overlay
 @return 生成的覆盖物View
 */
- (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id<BMKOverlay>)overlay {
    if ([overlay isKindOfClass:[BMKGroundOverlay class]]) {
        //初始化一个overlay并返回相应的BMKGroundOverlayView的实例
        BMKGroundOverlayView *groundView = [[BMKGroundOverlayView alloc] initWithGroundOverlay:overlay];
        return groundView;
    }
    return nil;
}
3运行程序

效果如图:

arc004.jpg

删除Overlay
//删除单个overlay
[_mapView removeOverlay:ground];
批量操作Overlay

批量添加Overlay

/**
 *向地图窗口添加一组Overlay,需要实现BMKMapViewDelegate的-mapView:viewForOverlay:函数来生成标注对应的View
 *@param overlays 要添加的overlay数组
 */
- (void)addOverlays:(NSArray *)overlays;

批量删除Overlay

/**
 *移除一组Overlay
 *@param overlays 要移除的overlay数组
 */
- (void)removeOverlays:(NSArray *)overlays;
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消