gibt es eine Möglichkeit, ein MKOverlay
, das bereits zu MKMapView
hinzugefügt wurde, zu aktualisieren (d. h. sich zu bewegen). Das Entfernen eines alten und das Hinzufügen eines neuen ist schrecklich (langsam).
ich möchte die Hintergrundfunktion auslösen, die diese Funktion aufruft, wenn sich ein Overlay auf dem Bildschirm bewegt:
%Vor% (mit MKAnnotions
ist es ein bisschen besser, denke ich, aber ich kann MKPolyline
, MKPolygon
usw. nicht benutzen und die ganze Information wird auf einen einzigen Punkt reduziert)
MKOverlayView
verfügt über die folgenden Methoden, die MapKit zwingen, die angegebene mapRect erneut zu rendern:
- (void)setNeedsDisplayInMapRect:(MKMapRect)mapRect
- (void)setNeedsDisplayInMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale
Wenn Sie einen Timer verwenden (oder eine periodische HTTP-Anfrage oder eine andere Methode, um zu bestimmen, dass Ihr Overlay aktualisiert werden soll), ruft das Aufrufen einer der oben genannten Methoden in OverlayView den Spot erneut auf die Karte (dh -canDrawMapRect:zoomScale:
wird erneut aufgerufen, und dann wird -drawMapRect:zoomScale:inContext:
aufgerufen, wenn die vorherige JA zurückgibt).
Aktualisierung:
Wenn Sie nicht sicher sind, welche mapRect Sie erneut rendern müssen, können Sie möglicherweise die MKMapRectWorld
-Konstante als mapRect verwenden - was meiner Meinung nach die Überlagerung über die gesamte Ebene verursachen würde neu zu ladende Karte (einmal sichtbar).
Verwenden Sie MKAnnotations
. Sie können die Koordinaten von ihnen ändern. Deaktivieren Sie einfach alle Touch-bezogenen Sachen. Sie würden Ihren eigenen Zeichnungscode benötigen, um die Anmerkungen zu zeichnen, OpenGL würde wahrscheinlich den Trick machen. Niemand würde den Unterschied kennen.
Ich musste tatsächlich die Overlay-Ansicht erzwingen, um den Pfad ungültig zu machen, den alten Pfad zu löschen, bevor ich einen neuen Pfad einrichte. [polygonView ungültigerPfad]. Es war für mich nicht ausreichend, der Kartenansicht mitzuteilen, dass eine Anzeigeaktualisierung erforderlich ist.
Dies scheint zu erzwingen, dass die Karte Overlays aktualisiert. Wahrscheinlich auch Anmerkungen.
[self.mapView setCenterCoordinate: self.mapView.centerCoordinate];
Tags und Links iphone mkmapview mkannotation