Problème de déplacement sur la carte MKPinAnnotation iPhone

voix
3

Je construis une application qui permet de suivre l'emplacement de l'utilisateur sur la carte. Je peux insérer une broche facilement, mais lorsque l'emplacement est modifié, l'application se ferme.

Je définir les coordonnées par défaut à 0,0 dans viewDidLoad: Méthode et j'ai ajouté une broche à cet endroit. Je l'ai fait parce que je veux retirer la broche lorsque l'emplacement est mis à jour puis insérez la broche à nouveau nouvel emplacement.

Voici le code que je l'ai écrit dans - (void) LocationManager: didUpdateToLocation: fromLocation: méthode.

 [mapview removeAnnotation:myannotation]; 
 CLLocationCoordinate2D currentlocation;
 currentlocation.latitude=newLocation.coordinate.latitude;
 currentlocation.longitude=newLocation.coordinate.longitude;

 myannotation=[[[CSMapAnnotation alloc]initWithCoordinate:currentlocation annotationType:CSMapAnnotationTypeStart title:@My Location] autorelease];

 [mapview addAnnotation:myannotation];  

Ici, myannotation est la broche que je veux ajouter, newLocation est l'emplacement mis à jour et CSMapAnnotation retournera vue d'annotation.

Le problème est mon application plante à chaque fois. Je suis en mesure d'obtenir un message d'avertissement sur la console avant de s'écraser. Voici le message:

« Une instance 0x182020 de CSMapAnnotation de classe est désallouée tandis que les observateurs de valeurs-clés sont toujours enregistrées avec elle. L'observation est d'info qu'on laisse couler, et peut même devenir à tort attaché à un autre objet. »

Donc, plz aider si quelqu'un a dû faire face au même problème ...

Créé 10/08/2009 à 12:00
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
1

Quelques choses à surveiller:

  • MKMapView a déjà un showsUserLocationattribut qui suit l'emplacement de l'utilisateur pour vous avec la chose bleu-point pulser. Si vous souhaitez définir séparément une broche sur cet emplacement, vous pouvez obtenir l' userLocationattribut de la MapView.

  • Le plantage pourrait être à cause de l' autoreleaseappel. Meilleure façon de le fixer est de faire myannotationune propriété avec un retainattribut, puis prendre la autorelease et au lieu d' myannotationutilisation self.myannotation.

  • Pas vraiment clair ce que vous entendez par la mise en « coordonnées par défaut à 0, 0 » Si ceux-ci sont lat / désire ardemment vous mettez une épingle à Greenwich, en Angleterre :-) Vous avez vraiment pas besoin d'ajouter et de supprimer des annotations sans cesse. Vous pouvez les ajouter une fois, puis ajuster leur position selon les besoins.

Créé 10/08/2009 à 19:53
source utilisateur

voix
0

Je viens de l'expérience de ce même problème et il y avait quelque chose à voir avec les coordonnées de l'annotation. J'étais déjà ignorant mais pour certains 0,0 utilisateurs ont été la raison SAISIE -180, -180 (peut-être d'un dispositif dans lequel on ne pouvait pas déterminer l'emplacement?)

Anyways - dès que je commencé à ignorer -180, -180 le problème a disparu. J'espère que cela t'aides.

Créé 07/05/2011 à 01:40
source utilisateur

voix
0

Je pense qu'il est de ne pas aimer votre tag autorelease pour myannotation, lorsque vous ajoutez l'annotation à la carte, il pourrait ne pas être étant retenue, et il Libère juste et accident, c'est ce que je peux penser de regarder le code affiché. J'espère que cela aide

Créé 10/08/2009 à 14:21
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more