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

折线类为 BMKPolyline,由一组经纬度坐标组成,并以有序序列形式建立一系列的线段。

绘制折线
1创建BMKMapView,并设置delegate
BMKMapView *mapView = [[BMKMapView alloc]initWithFrame:self.view.bounds];
mapView.delegate = self;
[self.view addSubView:mapView];
2添加折线覆盖物数据
// 添加折线覆盖物
    CLLocationCoordinate2D coor[4] = {0};
    coor[0].latitude = 39.832136;
    coor[0].longitude = 116.34095;

    coor[1].latitude = 39.832136;
    coor[1].longitude = 116.42095;

    coor[2].latitude = 39.902136;
    coor[2].longitude = 116.42095;

    coor[3].latitude = 39.902136;
    coor[3].longitude = 116.44095;
    BMKPolyline *polyline = [BMKPolyline polylineWithCoordinates:coor count:4];
    [_mapView addOverlay:polyline];
3实现代理方法
- (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id <BMKOverlay>)overlay{
    if ([overlay isKindOfClass:[BMKPolyline class]]){
        BMKPolylineView *polylineView = [[BMKPolylineView alloc] initWithOverlay:overlay];
        polylineView.strokeColor = [UIColor redColor];
        polylineView.lineWidth = 2.0;

        return polylineView;
    }
    return nil;
}
4运行程序

效果如图:

line001.jpg

分段颜色绘制折线

iOS地图SDK支持折线多段颜色绘制能力。

1添加分段折线数据,并构建分段颜色索引数组
CLLocationCoordinate2D coords[5] = {0};
    coords[0].latitude = 39.965;
    coords[0].longitude = 116.404;
    coords[1].latitude = 39.925;
    coords[1].longitude = 116.454;
    coords[2].latitude = 39.955;
    coords[2].longitude = 116.494;
    coords[3].latitude = 39.905;
    coords[3].longitude = 116.554;
    coords[4].latitude = 39.965;
    coords[4].longitude = 116.604;
    //构建分段颜色索引数组
    NSArray *colorIndexs = [NSArray arrayWithObjects:
                            [NSNumber numberWithInt:2],
                            [NSNumber numberWithInt:0],
                            [NSNumber numberWithInt:1],
                            [NSNumber numberWithInt:2], nil];

//构建BMKPolyline,使用分段颜色索引,其对应的BMKPolylineView必须设置colors属性
   BMKPolyline *colorfulPolyline = [BMKPolyline polylineWithCoordinates:coords count:5 textureIndex:colorIndexs];
[_mapView addOverlay:colorfulPolyline];
2实现代理方法,并设置分段颜色
//根据overlay生成对应的View
- (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id <BMKOverlay>)overlay
{
    if ([overlay isKindOfClass:[BMKPolyline class]]) {
        BMKPolylineView *polylineView = [[BMKPolylineView alloc] initWithOverlay:overlay];
        polylineView.lineWidth = 5;
        /// 使用分段颜色绘制时,必须设置(内容必须为UIColor)
        polylineView.colors = [NSArray arrayWithObjects:[UIColor greenColor], [UIColor redColor], [UIColor yellowColor], nil];
        return polylineView;
    }

    return nil;
}
3运行程序

line002.jpg

分段纹理折线

iOS地图SDK支持折线分段颜色绘制能力。

纹理素材格式:纹理图宽高片须是2的整数幂,如64*64,否则无效;若设置了纹理图片,设置线颜色类型将无效。

注意:目前仅支持对折线设置纹理,其余覆盖物目前暂不支持设置纹理。

1添加分段纹理绘制折线数据,并构建构建分段纹理索引数组
//构建顶点数组
CLLocationCoordinate2D coords[5] = {0};
coords[0].latitude = 39.965;
coords[0].longitude = 116.404;
coords[1].latitude = 39.925;
coords[1].longitude = 116.454;
coords[2].latitude = 39.955;
coords[2].longitude = 116.494;
coords[3].latitude = 39.905;
coords[3].longitude = 116.654;
coords[4].latitude = 39.965;
coords[4].longitude = 116.704;
//构建分段纹理索引数组
NSArray *textureIndex = [NSArray arrayWithObjects:
                         [NSNumber numberWithInt:0],
                         [NSNumber numberWithInt:1],
                         [NSNumber numberWithInt:2],
                         [NSNumber numberWithInt:1], nil];

//构建BMKPolyline,使用分段纹理
BMKPolyline *polyLine = [BMKPolyline polylineWithCoordinates:coords count:5 textureIndex:textureIndex];
//添加分段纹理绘制折线覆盖物
[_mapView addOverlay:polyLine];
2实现代理方法,并加载分段纹理图片
//根据overlay生成对应的View
- (BMKOverlayView*)mapView:(BMKMapView *)map viewForOverlay:(id<BMKOverlay>)overlay
{
    if ([overlay isKindOfClass:[BMKPolyline class]]) {
        BMKPolylineView *polylineView = [[BMKPolylineView alloc] initWithOverlay:overlay];
        polylineView.lineWidth = 5;
        polylineView.isFocus = YES;// 是否分段纹理绘制(突出显示),默认YES
        //加载分段纹理图片,必须否则不能进行分段纹理绘制
        [polylineView loadStrokeTextureImages:
         [NSArray arrayWithObjects:[UIImage imageNamed:@"road_blue_arrow.png"],
          [UIImage imageNamed:@"road_green_arrow.png"],
          [UIImage imageNamed:@"road_red_arrow.png"],nil]];
        return polylineView;
    }
    return nil;
}
3运行程序
效果如图:

line003.jpg

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

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

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消