Как мне показать MKOverlay выше MKAnnotations?

Я пытаюсь использовать MKOverlay (в частности, MKPolyline) показать маршрут на карте. Тем не менее, мне нужен маршрут, чтобы показать над моими существующими булавками MKAnnotationViewс). Есть ли хороший способ принести MKPolyline впереди над булавками?

1 ответ

Решение

Может быть полезно исследовать слой аннотаций zOrder имущество. Отправка аннотаций в иерархии вашего суперпредставления может помочь вам достичь необходимого эффекта. Изменение положения аннотации по оси z, вероятно, следует выполнять в mapView:didAddAnnotationViews: метод делегата.

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

Прошло много времени с тех пор, как я имел дело с MKPolylineи я знаю, что в iOS 8 многое изменилось, но вы можете напрямую манипулировать положением z полилинии во время рисования.


ОБНОВИТЬ
Когда вы добавляете MKOverlay на карту, начиная с iOS 7.0+, используйте addOverlay:level: метод. Это позволяет вам указать z-позицию наложения. Одна из самых высоких z-позиций для наложения, как определено MKOverlayLevels является MKOverlayLevelAboveLabels:

Поместите наложение над метками, щитами или значками достопримечательностей, но под аннотациями и трехмерными проекциями зданий.

К сожалению, как упоминалось в документации выше, карта не поддерживает размещение наложений над аннотациями. Возможным решением может быть добавление аннотаций к отдельному MKOverlay объект, а затем добавить другое наложение (с путем) на карту, используя insertOverlay:aboveOverlay:,

Другие вопросы по тегам