How do I show MKOverlay above MKAnnotations?

I'm trying to use an MKOverlay (specifically an MKPolyline ) to show a route on the map. However, I need the route to show up above my existing pins (custom MKAnnotationView s). Is there a good way to bring the MKPolyline to the front above the pins?


It might be useful to investigate the annotation layer's zOrder property. Sending the annotations backwards in your superview's hierarchy may help you achieve the effect needed. Changing your annotation z-axis position should probably be done within the mapView:didAddAnnotationViews: delegate method.

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
    annotationView.layer.zPosition = x;
}

It's been a while since I've dealt with MKPolyline , and I know things changed a lot in iOS 8, but you might be able to directly manipulate the polyline's z position while you're drawing it.


UPDATE
When you add your MKOverlay to the map, starting in iOS 7.0+, use the addOverlay:level: method. This allows you to specify the z-position of the overlay. One of the highest z-positions for the overlay as defined by MKOverlayLevels is MKOverlayLevelAboveLabels :

Place the overlay above map labels, shields, or point-of-interest icons but below annotations and 3D projections of buildings.

Unfortunately, as mentioned in the documentation above, the map does not support placing overlays above annotations. A possible solution may be to add the annotations to a separate MKOverlay object and then to add the other overlay (with the path) to the map using insertOverlay:aboveOverlay: .

链接地址: http://www.djcxy.com/p/88350.html

上一篇: Laravel登录不能在边缘和Internet Explorer中工作

下一篇: 如何在MKAnnotations上显示MKOverlay?