Мне нужно найти способ преобразовать маркеры из MGLPointAnnotation
в MGLShapeSource
или аналогичный, чтобы, например, добавить маркеры на слой карты и иметь полный контроль над их отображением и кластеризацией на карте.
Я создаю приложение для iOS, используя MapBox SDK v5.2
. Приложение генерирует маркеры внутри (заголовок, подзаголовок, координаты и имя изображения значка), и при нажатии маркеры отображаются на карте с выноской. Маркеры создаются с помощью MGLPointAnnotation()
и добавляются на карту с помощью mapView.addAnnotation()
.
Но для того, чтобы иметь полный контроль над тем, как отображаются маркеры, например, их кластеризация на основе уровня масштабирования или их включение / выключение, мне нужно добавить маркеры на слой карты, используя, например, MGLShapeSource
, а затем style.addSource()
и style.addLayer()
.
Проблема в том, что я не могу найти способ конвертера из MGLPointAnnotation
в MGLShapeSource
или аналогичного. Я исследовал это, но единственное решение, которое я могу придумать, - это поместить информацию о маркере в GeoJSON
файл. Но я хочу избежать этого, поскольку маркеры генерируются внутри приложения при его запуске, а не из внешнего файла GeoJSON, доступного только для чтения.
Пример создания одного пои:
let poi1 = MGLPointAnnotation()
poi1.coordinate = CLLocationCoordinate2D(latitude: 38.788534, longitude: -9.494489)
poi1.title = "poi1"
poi1.subtitle = "This is the text for poi1"
poiTitleImage[poi1.title!] = "icon1"
mapView.addAnnotation(poi1)