2016-06-20 25 views
0

Wir verwenden ein MKTileOverlay, um OpenStreetMap-Karten mit MKMapView anzuzeigen. Z.B.MKTileOverlay: So löschen Sie den Kachel-Cache und laden Kacheln neu

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

Durch Verwendung des MKTileOverlay Mechanismus, Laden und Caching von der bzw. MKTileOverlay behandelt. die MKMapView. Jetzt können wir einige seltsame Verhaltensweisen beobachten.

Es scheint, dass die Leistung nach längerer Nutzung abnimmt (Vielleicht aufgrund von Speicherproblemen?). In diesem Fall bleiben einige Kacheln leer.

Deshalb haben wir die folgenden Fragen:

Weiß jemand, wie die Kachel-Cache leeren Speicherprobleme zu vermeiden? Kann jemand eine bestimmte Kachel neu laden, wenn vorher ein Problem aufgetreten ist?

Vielen Dank für Ihr Feedback und Ihre Anregungen.

Michael

Antwort

0

Blick auf diese

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

gibt es einen Funktionsaufruf für MKTileOverlayRenderer (Renderer, nicht das Overlay), um Daten nachzuladen

und ich fand this tutorial, die beschreibt, wie um einen MKTileOverlayRenderer zu implementieren. Mit diesem Renderer können Sie nur die gewünschte Kachel aktualisieren, indem Sie setNeedsDisplayIn (areaToRedraw) aufrufen (Swift3)