MKMapView réactualisation de la broche se déplace
Personnalisé AnnotationView est mis à jour avec de nouvelles coordonnées. Mais le problème, c'est que visuellement mises à jour uniquement après quelques manipulations avec MKMapView, par exemple, le zoom et le déplacement.
Que dois-je faire pour mettre à jour manuellement visuelle de la position sur une carte?
PS. J'ai essayé de changer de région à carte actuelle de la région. Mais il n'changement de zoom. C'est étrange.
[mapView setRegion:[mapView region] animated:YES];
Veuillez voir ma réponse sur le lien suivant: stackoverflow.com/a/24564868/665961
OriginalL'auteur slatvick | 2009-07-27
Vous devez vous connecter pour publier un commentaire.
Je suis un peu shoked après des heures de recherche. La réponse est tout simplement:
Ne me demandez pas pourquoi, mais il met à jour une mapview et c'est ce que j'ai besoin.
Ne fonctionne pas en 3.1.2.
Cette juste fixé mon bug! Merci!!!!!
OriginalL'auteur
MKMapView
observe les coordonnées de la propriété des annotations viaKVO
. Vous avez simplement besoin de respecter laKVO
protocole et d'envoyer l'annotationwillChangeValueForKey:
etdidChangeValueForKey:
avec chemin d'accès clé de@"coordinate"
avant et après la mise à jour des coordonnées.De même
title
etsubtitle
sont également observées parMKMapView
. donc, si vous mettez à jour ces et que la valeur dans la légende de changer automatiquement sans aucun effort de votre part, il suffit de faire: appelerwillChangeValueForKey:
etdidChangeValueForKey:
Alors que le
setCenterCoordinate:animated:
œuvres, le KVO ici aussi des œuvres et est certainement plus approprié et permet laMKMapView
à coordonner la mise à jour à partir de plusieurs observations de mieux.OriginalL'auteur
si votre ajout de votre annoations à partir d'un thread il l'habitude de travailler.
j'ai eu le même problème et juste envelopper ma fonction était d'ajouter des annotations à la suite travaillé
OriginalL'auteur
La réponse ici est de ne PAS actualiser la MapView ou l'Annotation!
les coordonnées de la propriété de MKAnnotation a KVO. Si vous ajoutez simplement le pointeur de l'id de l'objet que vous voulez sur la carte, à la mapview et mettre à jour les coordonnées de la propriété avec un nouvel emplacement, MKMapView fera le reste pour vous.
Aussi proche que vous pouvez obtenir un repas gratuit!
OriginalL'auteur
J'ai résolu cette erreur avec un appel asynchrone, d'au moins 0,5 retard.
par exemple:
[self performSelector:@selector(redrawPins) withObject:nil afterDelay:0.5];
Où "redrawPins" est la fonction qui ajoute et supprime des pins.
OriginalL'auteur
Il n'y a aucune raison que vous ne pouvez pas supprimer et ajouter de nouveau l'annotation. C'est probablement la façon de les rendre plus performants que le déplacement de l'ensemble de la carte, même si c'est un fake déplacer.
Je suis sûr que la plupart des gens qui ont trouvé ce fil avait déjà essayé ça; je sais que j'ai fait. Cela provoque un comportement bizarre.
OriginalL'auteur
Voici l'interface de MapAnnotation:
Et ici est la mise en œuvre:
OriginalL'auteur