2016-05-25 25 views
0

Wie erhält man eine Liste (Array) des derzeit sichtbaren Overlays von einem MapkitView?Wie erhält man sichtbare Überlagerungen in MapKit? (d. h. MKOverlay/MKOverlayRender aus einem Mapkit-Ivew)

Hintergrund - zum Beispiel möchte ich Richtungspfeile zum Mittelpunkt bestimmter Overlay-Typen auf meiner MapkitView zeigen, aber wie bekomme ich die sichtbaren? Es scheint keinen Weg zu geben, dies zu tun, was ich sehen kann? Muss ich also alle Overlays (eigentlich ~ 8000) durchgehen und meine eigenen Checks durchführen, um zu sehen, was auf dem Bildschirm angezeigt wird? Es wäre eine Verschwendung, wenn MapKit dies bereits effektiv getan hätte, um zu entscheiden, welche Overlays zu einem bestimmten Zeitpunkt angezeigt werden müssen.

Antwort

1

Ich habe mit einigen ähnlichen Problemen herumgebastelt und der effizienteste Weg, den ich herausfinden konnte, war, die Overlays als Anmerkungen hinzuzufügen, da MKOverlayMKAnnotation implementiert. Dann könnten Sie annotationsInMapRect für die aktuell angezeigte mapRect verwenden. Dies würde jedoch auch alle regulären MKAnnotations zurückgeben und nur die berechnete Mitte des Overlays verwenden. Der einzige Weg, (so weit ich dachte), um nur die Overlays bekommen würde über jede Overlay und Verwendung iterieren:

-(BOOL)intersectsMapRect:(MKMapRect)mapRect; 

auf dem aktuell sichtbaren mapRect. Wenn Sie einen anderen Weg gefunden haben, würde ich mich freuen zu hören!

+0

Ich ging einfach die stumpfe Vorgehensweise von, wenn sich etwas ändert, dann aktualisiert die gesamte Überlagerung, und dann durchlaufen sie alle um herauszufinden, was auf dem Bildschirm wäre und dann für diese manuell setzen sie aktualisieren ... nicht sicher, ob Das ist Ton oder nicht ... – Greg