MKTileOverlay:如何清除磁贴缓存以及如何重新加载磁贴

时间:2016-06-20 13:01:57

标签: caching mkmapview reload tiles mktileoverlay

我们将使用MKTileOverlay来显示带有MKMapView的OpenStreetMap地图。 E.g。

MKTileOverlay *overlay = [[MKTileOverlay alloc] initWithURLTemplate:@"http://tile.openstreetmap.org/{z}/{x}/{y}.png"];
[self.mapView addOverlay:overlay level:MKOverlayLevelAboveLabels];

通过使用MKTileOverlay机制,加载和缓存由MKTileOverlay分配处理。 MKMapView。 现在,我们可以观察到一些奇怪的行为。

似乎长时间使用后性能会下降(可能是由于内存问题?)。 在这种情况下,有些瓷砖会保持空白。

因此,我们有以下问题:

有人知道如何清除磁贴缓存以避免内存问题吗? 如果以前出现问题,有人知道如何重新加载特定的瓷砖吗?

感谢您的反馈和建议。

迈克尔

1 个答案:

答案 0 :(得分:0)

看看这个

https://developer.apple.com/library/mac/documentation/MapKit/Reference/MKTileOverlayRenderer_class/#//apple_ref/occ/instm/MKTileOverlayRenderer/reloadData

有一个用于重新加载数据的MKTileOverlayRenderer(渲染器,而不是叠加层)的functionCall

我找到了this tutorial,它描述了如何实现MKTileOverlayRenderer。通过此渲染器,您应该能够通过调用setNeedsDisplayIn(areaToRedraw)(Swift3)来更新所需的图块

相关问题