如何在viewForOverlay中区分两个MKPolyline:

Nic*_*ard 3 iphone polyline mkmapview ios mkoverlay

我加载多MKPolylinesoverlays上一个MKMapView.我希望能够区分这些如何改变颜色,线宽等等.

但是,当viewForOverlay:被调用时,它会看到我所有MKPolylines的相同,这不允许我改变它们中的任何一个.

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {

    if ([overlay isKindOfClass:[MKPolyline class]]) {
        MKPolylineView *aView = [[[MKPolylineView alloc] initWithPolyline:(MKPolyline*)overlay] autorelease];
        aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7];
        MKZoomScale currentZoomScale = (CGFloat)(mapView.bounds.size.width / mapView.visibleMapRect.size.width);
        aView.lineWidth = MKRoadWidthAtZoomScale(currentZoomScale);

        return aView;
    }

    // Want to color my next overlay red

    return  nil;
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我可以以某种方式将标签附加到每个MKPolyline?或者,另一个更好的方法来做到这一点?

小智 8

MKPolyline继承MKShape具有可设置的title(和subtitle)属性,您可以使用它来区分它们.

这个答案有一个如何将它与MKPolygon对象一起使用的例子.

如果title并且subtitle不足以满足您的要求,那么您可以将子类化为Mundi评论.