2010-07-03 6 views
14

J'essaye de créer une superposition polyline (MKPolyline) qui se met à jour périodiquement, pour simuler le mouvement d'un objet. Je peux y parvenir en supprimant l'ancienne superposition, en mettant à jour la polyligne et en ajoutant à nouveau la superposition, mais cela entraîne des scintillements. Pour une annotation ponctuelle (MKPointAnnotation), vous pouvez simplement modifier ses coordonnées et la vue sera mise à jour automatiquement et en douceur sans devoir supprimer et ajouter de nouveau l'annotation.comment mettre à jour MKPolyline/MKPolylineView?

Est-ce aussi possible d'une façon ou d'une autre?

+0

J'ai posté une pleine mise en œuvre [ici] [1] [1]: http://stackoverflow.com/questions/11282271/draw-line-on-mkmapview-with-pattern -image/11344230 # 11344230 – EsbenB

Répondre

15

De plus, vous devez ajouter une superposition supplémentaire avec le point défini entre votre dernier point et votre prochain point. Une fois que vous créez le MKPolyline avec vos points, vous ne pouvez pas le changer quand il dessine le MKPolylineView sans enlever le vieux et en ajoutant le nouvellement créé.

Vous pouvez créer une nouvelle vue de polyligne avec tous les points (y compris le nouveau) et l'ajouter à la carte, mais ne supprimez pas la plus ancienne. Une fois le nouveau ajouté, vous pouvez retirer le plus ancien. Il pourrait ne pas être joli à implémenter mais il devrait se débarrasser du clignotant sur les mises à jour. vous pouvez distinguer l'ancien et le nouveau avec une étiquette. peut-être un point compte que le tag fonctionnerait.

+0

merci pour votre réponse. Je l'ai mis en place comme vous le suggérez et ça marche plutôt bien. Comme vous le dites, pas la plus jolie mise en œuvre, mais probablement le meilleur que je puisse faire sans écrire mes propres classes PolyLine. – adriaan

+0

Merci pour la réponse. Malheureusement, cela ne résout probablement pas mon problème, car ma superposition est semi-transparente. Je devrais probablement ajouter ma propre vue en haut de la carte. – huggie

+0

merci AtomRiot! – james075

1

La classe MKPolyline hérite de MKMultiPoint, qui consiste en un ensemble de points. Cette propriété est en lecture seule, ce qui signifie que vous ne pouvez malheureusement pas la mettre à jour.

+0

Merci pour votre réponse Peter. Logique. – adriaan

9

Tous les recouvrements MapKit sont immuables, donc pour obtenir la mutabilité, vous devez créer votre superposition personnalisée et redessiner seulement la région qui doit être mise à jour.

Vous trouverez un exemple dans l'exemple d'application Breadcrumb d'Apple. Breadcrumb link

+0

Merci @SorinA - Comme je l'ai mentionné, je suis allé avec l'approche @ AtomRiot à l'époque. Mais dans la prochaine mise à jour pour l'application, je vais vérifier l'échantillon Breadcrumb pour voir si cela peut être une amélioration. – adriaan