Я относительно новичок в разработке iOS и Mapbox. Я работаю над приложением, в котором пользователь может свободно управлять картой, заполненной местами, которые они сохранили.
Когда они достигают уровня масштабирования, полностью заполненного географией города, я хотел бы отобразить название города, который они просматривают, в виде баннера, даже если метка города не находится в поле зрения на карту (как это часто бывает при увеличении).
Это скриншот пользовательского интерфейса для контекста.
Я пытаюсь запросить набор плиток Mapbox для названия города, используя следующий код:
func mapViewRegionIsChanging(_ mapView: MGLMapView) {
let zoomLevel = mapView.zoomLevel
if zoomLevel >= 14.0 {
// layer identifier taken from layer name in Mapbox Studio
let layerIdentifier = "place-city-lg-n"
let screenRect = UIScreen.main.bounds
let cityName = mapView.visibleFeatures(in: screenRect, styleLayerIdentifiers: Set([layerIdentifier]))
print(cityName)
}
Я думаю, что этот код не работает, потому что метка не отображается на экране при указанном уровне масштабирования.
Мне интересно, является ли использование visibleFeaturesInRect
лучшим подходом для моих нужд - есть ли лучший способ получить название города независимо от видимых элементов и уровня масштабирования?