美文网首页
iOS mapView添加各种形状的覆盖物层

iOS mapView添加各种形状的覆盖物层

作者: 小小啄 | 来源:发表于2019-06-13 13:59 被阅读0次

有时候我们需要在地图上添加覆盖物图层,系统提供了添加圆形、矩形、和线的方法,但是不规则的图形该怎么添加呢:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.mapView.delegate = self;
    [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(40.161613, 116.672968) animated:YES];
    MKCoordinateSpan span = MKCoordinateSpanMake(self.mapView.region.span.latitudeDelta * 0.01, self.mapView.region.span.longitudeDelta * 0.01);
    //设置地图范围
    [self.mapView setRegion:MKCoordinateRegionMake(CLLocationCoordinate2DMake(40.161613, 116.672968), span) animated:YES];
    //绘制线的方法
    [self pathOverLay];
    //绘制圆形
    [self addCircleOverlay];
    //绘制任意多边形
    [self addPolygonOverlay];
}

//绘制线的方法
- (void)pathOverLay {
    CLLocationCoordinate2D pathCoords[6] = {
        CLLocationCoordinate2DMake(40.2366667f, 116.6850000f),
        CLLocationCoordinate2DMake(40.2366667f, 116.7250000f),
        CLLocationCoordinate2DMake(40.1766667f, 116.8850000f),
        CLLocationCoordinate2DMake(40.0366667f, 116.7850000f),
        CLLocationCoordinate2DMake(39.9366667f, 116.8850000f),
        CLLocationCoordinate2DMake(39.8366667f, 116.9850000f)
    };
    MKPolyline *pathOverlay = [MKPolyline polylineWithCoordinates:pathCoords count:6];
    [self.mapView addOverlay:pathOverlay];
}

//圆形
- (void)addCircleOverlay {
    MKCircle *circleOverlay = [MKCircle circleWithCenterCoordinate:CLLocationCoordinate2DMake(39.8166667f, 116.5666667f) radius:10000.0f];
    [self.mapView addOverlay:circleOverlay];
}

//任意多边形
- (void)addPolygonOverlay {
    const int allNum = 12;
    CLLocationCoordinate2D ploycoords[allNum]  = {
        CLLocationCoordinate2DMake(40.2283333f, 116.5283333f),
        CLLocationCoordinate2DMake(40.2366667f, 116.6133333f),
        CLLocationCoordinate2DMake(40.1533333f, 116.6100000f),
        CLLocationCoordinate2DMake(40.0983333f, 116.6783333f),
        CLLocationCoordinate2DMake(40.0616667f, 116.6850000f),
        CLLocationCoordinate2DMake(39.9966667f, 116.6366667f),
        CLLocationCoordinate2DMake(39.9166667f, 116.6666667f),
        CLLocationCoordinate2DMake(39.9083333f, 116.5816667f),
        CLLocationCoordinate2DMake(39.9916667f, 116.5850000f),
        CLLocationCoordinate2DMake(40.0466667f, 116.5166667f),
        CLLocationCoordinate2DMake(40.0800000f, 116.5116667f),
        CLLocationCoordinate2DMake(40.1483333f, 116.5583333f)
    };
    MKPolygon *polygonOverlay = [MKPolygon polygonWithCoordinates:ploycoords count:allNum];
    [self.mapView addOverlay:polygonOverlay];
}

#pragma mark - MKMapViewDelegate
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay {
    MKPolygonRenderer *poly = nil;
    if ([overlay isKindOfClass:[MKPolygon class]] == YES) {
        poly = [[MKPolygonRenderer alloc] initWithOverlay:overlay];
        poly.lineWidth = 1.0;
        CGFloat alphaFloat = 0.2;
        poly.strokeColor = [[UIColor redColor] colorWithAlphaComponent:1.0];
        poly.fillColor = [[UIColor greenColor] colorWithAlphaComponent:alphaFloat];
    }
    else if ([overlay isKindOfClass:[MKCircle class]] == YES) {
        MKCircleRenderer *circle = [[MKCircleRenderer alloc] initWithOverlay:overlay];
        circle.lineWidth = 1.0;
        CGFloat alphaFloat = 0.2;
        circle.strokeColor = [[UIColor redColor] colorWithAlphaComponent:1.0];
        circle.fillColor = [[UIColor greenColor] colorWithAlphaComponent:alphaFloat];
        return circle;
    }
    else if ([overlay isKindOfClass:[MKPolyline class]] == YES) {
        MKPolylineRenderer *line = [[MKPolylineRenderer alloc] initWithOverlay:overlay];
        line.lineWidth = 2;
        line.strokeColor = [UIColor blueColor];
        return line;
    }
    return poly;
}

运行效果:


mapView.jpeg

相关文章

  • iOS mapView添加各种形状的覆盖物层

    有时候我们需要在地图上添加覆盖物图层,系统提供了添加圆形、矩形、和线的方法,但是不规则的图形该怎么添加呢: 运行效果:

  • 高德地图如何添加覆盖物(添加自定义布局到地图上)

    Android 高德地图上添加覆盖物最简单的是直接添加Marker AMap aMap =mapView.getM...

  • iOS 高德地图点击事件

    本例是以高德地图覆盖物圆作为电子围栏,通过给mapview添加的Tap事件确定圆的经纬度,滑动slider修改圆的...

  • MKOverlayView

    为地图加载覆盖物 现在didLoadView中加入 第二步 用MapView的代理方法

  • 学习笔记 - 地图

    1.iOS系统定位 2.地理编码与反编码 3.MapView 4.添加大头针

  • BMap添加覆盖物

    初始化BMap 配置BMap 添加控件 添加Marker 添加多个Marker

  • iOS 原生地图覆盖物

    添加地图覆盖物的逻辑原理 地图覆盖物其实就是在地图上画一些东西,例如路径,范围等等。添加地图覆盖物的逻辑原理其实和...

  • MapView演练

    结合MapView与LBS相关知识点:定位、地理编码/反地理编码、地图覆盖物、导航写了一个小的Demo 并且在导航...

  • 百度地图api关于标注和覆盖物

    添加跳跃的标识 添加圆形覆盖物 移入显示标签移出移除标签 如果想要创建多个覆盖物或者标签,直接把他们塞到一个for...

  • iOS开发--使用地图规划路径

    iOS系统为我们提供了原生的mapView,我们只需要将mapView控件拖动到stiryBoard中,或者用代码...

网友评论

      本文标题:iOS mapView添加各种形状的覆盖物层

      本文链接:https://www.haomeiwen.com/subject/gstsfctx.html