【问题标题】:how to handle multiple MKOverlays in delegate function如何在委托函数中处理多个 MKOverlay
【发布时间】:2017-02-27 22:40:59
【问题描述】:

我想要一个带有两个不同叠加层的 MKMapView。

首先,我有一个“地图上的图像叠加层”(TileOverlay), 其次,我想在地图上绘制一条路线作为叠加层。

如果我在两个不同的项目(一个带有图像叠加层,另一个带有路径叠加层)中执行此操作,一切正常

现在,我想知道如果我合并我的项目,viewForOverlay 委托函数应该是什么样子?

对于我的图像(平铺)覆盖,我目前看起来像这样:

- (MKOverlayView *) mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{    
    TileOverlayView *tileView = [[TileOverlayView alloc] initWithOverlay:overlay];
    tileView.tileAlpha = 1.0;
    return tileView;
}

对于我的路线 Overlay,它看起来像这样:

- (MKOverlayView*)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay 
{
    MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
    polylineView.lineJoin = kCGLineJoinRound;
    polylineView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.4];
    return polylineView;
}

现在如果我想“合并”这些(到一个项目中),这个方法应该是什么样子?

 - (MKOverlayView*)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay 
{
    //what comes here?
}

【问题讨论】:

    标签: ios xcode mkoverlay


    【解决方案1】:

    您可以通过首先检查传递给mapView:viewForOverlay: 方法的叠加层类型来处理这种情况,如下所示:

    - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
    
        if ([overlay isKindOfClass:[MKPolyline class]]) {   
    
            MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
            polylineView.lineJoin = kCGLineJoinRound;
            polylineView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.4];
            return polylineView;
    
        } else {
    
            TileOverlayView *tileView = [[TileOverlayView alloc] initWithOverlay:overlay];
            tileView.tileAlpha = 1.0;
            return tileView;
        }
    

    【讨论】:

    • 好的,谢谢,但是那我要返回什么?我不必返回包含两个叠加层的 MKOverlayView 吗?或者如果它是KindOfClass MKPolyline,我是否只需要返回polylineView,如果它是KindOfClass tileView,我只需要返回tileView?
    猜你喜欢
    • 2011-01-29
    • 2016-09-02
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多