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:
.
© 2022 - 2024 — McMap. All rights reserved.