Verschieben / Aktualisieren MKOverlay auf MKMapView

8

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)

    
user398877 22.07.2010, 09:12
quelle

4 Antworten

4

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).

    
Mike Tigas 11.08.2010 18:34
quelle
1

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.

    
Nate Symer 12.09.2013 00:33
quelle
0

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.

    
Greg Combs 10.10.2010 20:43
quelle
0

Dies scheint zu erzwingen, dass die Karte Overlays aktualisiert. Wahrscheinlich auch Anmerkungen.

[self.mapView setCenterCoordinate: self.mapView.centerCoordinate];

    
zenchemical 17.02.2017 00:51
quelle

Tags und Links