Mapbox iOS получить аннотацию сверху? - PullRequest
0 голосов
/ 01 апреля 2020

Я кодирую приложение iOS с Mapbox MGLMapView, отображаемым на моем контроллере представления, на этом mapView я рисую маршрут, используя объекты MGLShapeSource, MGLLineStyleLayer и MGLPolylineFeature.

Вот код:

let newSource = MGLShapeSource(identifier: "polylineBlue", shape: self.polylines, options: nil)
mapView.style?.addSource(newSource)
let newStyle = MGLLineStyleLayer(identifier: "polylineBlueLayer", source: source)
...styling my layer...
mapView.style?.addLayer(newStyle)
source.shape = self.polylines // a MGLPolylineFeature object

Отлично работает для маршрута, но есть одна проблема: он появляется поверх моих аннотаций.

Я добавляю аннотацию с помощью обычной функции mapView:

mapView.addAnnotations([..my MGLPointAnnotation objects...])

Я пробовал искать здесь и на других веб-сайтах, я нашел только одну топи c, и нет ничего полезного, кроме того, что кто-то говорит, что мы не можем установить положение слоя z в аннотациях, так что никаких исправлений для что.

Кто-нибудь знает обходной путь? Должен ли я использовать это: https://docs.mapbox.com/ios/maps/examples/add-marker-symbol/?

если да, нужно ли мне создавать одну MGLSymbolStyleLayer на аннотацию?

Звучит как болезненное решение для такой базовой c потребности ...

Спасибо !

1 Ответ

1 голос
/ 21 апреля 2020

В предоставленных вами фрагментах кода кажется, что ваши аннотации MGLPointAnnotations. Если это так, вам нужно добавить MGLPointAnnotations к MGLShapeSource, используя MGLShapeSource (initWithIdentifier: shape:) , а затем использовать этот источник фигур для создания MGLSymbolStyleLayer.

Чтобы аннотации отображались поверх вашего маршрута, вам нужно будет проверить, когда каждый слой добавляется, так как слои «запекаются» на карте перед рендерингом. Если вы добавите MGLSymbolStyleLayer, отвечающий за аннотации после добавления маршрута на карту, они появятся сверху. Если вы добавите их до загрузки маршрута, они появятся под слоем линии маршрута. Нужен только один MGLSymbolStyleLayer.

Для получения дополнительной информации о маркерах и аннотациях, пожалуйста, ознакомьтесь с документацией Mapbox здесь .

...