MKTileOverlay: как очистить кеш тайлов и как перезагрузить тайлы
Мы собираемся использовать MKTileOverlay, чтобы показать карты OpenStreetMap с MKMapView. Например
MKTileOverlay *overlay = [[MKTileOverlay alloc] initWithURLTemplate:@"http://tile.openstreetmap.org/{z}/{x}/{y}.png"];
[self.mapView addOverlay:overlay level:MKOverlayLevelAboveLabels];
Используя механизм MKTileOverlay, загрузка и кэширование обрабатываются MKTileOverlay, соответственно. MKMapView. Теперь мы можем наблюдать некоторые странные поведения.
Похоже, что производительность снижается после длительного использования (может быть из-за проблем с памятью?). Что некоторые плитки остаются пустыми в таком случае.
Поэтому у нас есть следующие вопросы:
Кто-нибудь знает, как очистить кэш тайлов, чтобы избежать проблем с памятью? Кто-нибудь знает, как перезагрузить конкретную плитку, если раньше возникла проблема?
Спасибо за ваш отзыв и ваши предложения.
Майкл
1 ответ
Посмотри на это
https://developer.apple.com/library/mac/documentation/MapKit/Reference/MKTileOverlayRenderer_class/
есть функция CallCall для MKTileOverlayRenderer (средство визуализации, а не оверлей) для перезагрузки данных
и я нашел этот учебник, который описывает, как реализовать MKTileOverlayRenderer. С помощью этого средства визуализации вы сможете обновлять только нужную плитку, вызывая setNeedsDisplayIn(areaToRedraw) (Swift3)