Mapkit — пользовательские плитки с увеличенным масштабом не отображаются при наличии полигонов.

Я предоставляю MKMapView с MKTileOverlay, который заменяет содержимое карты. Провайдер вспомогательных плиток поднимается только до уровня масштабирования 15. Если пользователь увеличивает масштаб выше уровня масштабирования 15, он увеличивает масштаб плиток уровня 15 на карте вместо того, чтобы оставаться пустым.

Однако, если в секторе карты присутствует MKPolygon или MKPolyline, он будет отображать только форму. Под ним больше не будет отображаться фоновая плитка. Это происходит только при чрезмерном увеличении.

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

У кого-нибудь есть опыт в этом?


person Robert Cafazzo    schedule 30.08.2016    source источник


Ответы (1)


Я понял, что совершенно неправильно истолковывал функциональность, которую MapKit предоставляет для фрагментов карты.

Когда я увеличил масштаб и увидел, что мои плитки рендерятся, я предположил, что это функция увеличения. Когда области с полигонами не отображали плитки карты с такими уровнями масштабирования, я подумал, что средство визуализации полигонов каким-то образом отключило средство визуализации плиток. Как оказалось, поскольку единственным активным средством визуализации на этом увеличенном уровне был модуль визуализации Polygon, который был единственной перерисовываемой частью холста, остальная часть холста просто показывала то, что уже было там.

С точки зрения непрофессионалов:

Map Tile Renderer сообщает карте: «Я могу нарисовать эту большую область с уровнями масштабирования 0-5». Polygon Renderer говорит карте: «Я могу нарисовать эту небольшую область на всех уровнях масштабирования».

Когда я нахожусь на уровне масштабирования 5, и модуль рендеринга фрагментов карты, и модуль рендеринга полигонов запускаются и рисуют области, с которыми они могут работать. Когда я перехожу на уровень масштабирования 6, запускается только Polygon Renderer. На карте написано: «У меня есть визуализатор, который может рисовать в этом регионе, поэтому я собираюсь перерисовать его с этой информацией». Поскольку Map Tile Renderer не предоставляет фрагменты для уровня масштабирования 6, он не запустится. Остальная часть карты по-прежнему состоит из тайлов, потому что нет рендерера, который мог бы рисовать для нее, поэтому карта просто сохраняет то, что у нее уже есть на холсте.

Вкратце: я принял MapKit, не делающий лишних вызовов отрисовки, за функцию масштабирования.

person Robert Cafazzo    schedule 31.08.2016