Problema al mover MKPinAnnotation en el mapa de iPhone

votos
3

Estoy construyendo una aplicación que rastrea la ubicación del usuario en el mapa. Puedo insertar un marcador fácilmente, pero cuando se cambia la ubicación, la aplicación se cierra.

Establecí las coordenadas predeterminadas en 0,0 en viewdidload: method y agregué un pin en esa ubicación. Lo he hecho porque quiero quitar el pin cuando la ubicación se actualiza y luego volver a insertar el pin en la nueva ubicación.

Aquí está el código que he escrito en - (void) locationManager: didUpdateToLocation: fromLocation: method.

 [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];  

Aquí, myannotation es el pin que quiero agregar, newLocation es la ubicación actualizada y CSMapAnnotation devolverá la vista de anotación.

El problema es que mi aplicación falla cada vez. Pude recibir un mensaje de advertencia en la consola antes de colgar. Aquí está el mensaje:

Una instancia 0x182020 de la clase CSMapAnnotation está siendo desasignada, mientras que los observadores de valores clave todavía están registrados con ella. La información de observación se está filtrando, e incluso puede estar unida erróneamente a algún otro objeto.

Así que, por favor ayuda si alguien ha enfrentado el mismo problema ...

Publicado el 10/08/2009 a las 12:00
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
1

Algunas cosas a tener en cuenta:

  • MKMapView ya tiene un showsUserLocationatributo que rastrea la ubicación del usuario para usted con el elemento de punto azul pulsante. Si desea establecer un pin por separado en esa ubicación, puede obtener el userLocationatributo de la vista del mapa.

  • El error puede ser debido a la autoreleasellamada. La forma más fácil de solucionarlo es crear myannotationuna propiedad con un retainatributo, luego sacar la liberación automática y en lugar de myannotationusarla self.myannotation.

  • No es muy claro a qué te refieres al establecer "coordenadas predeterminadas en 0, 0". Si estos son lat / longs, entonces está poniendo un pin en Greenwich, Inglaterra :-) Realmente no necesita agregar y eliminar anotaciones continuamente. Puede agregarlos una vez y luego ajustar su posición según sea necesario.

Respondida el 10/08/2009 a las 19:53
fuente por usuario

votos
0

Acabo experimentado este mismo problema y que tenía algo que ver con las coordenadas de la anotación. Yo ya estaba ignorando 0,0 pero por alguna razón usuarios se insertando -180, -180 (tal vez de un dispositivo en el que no podía determinar la ubicación?)

de todos modos - tan pronto como empecé a ignorar -180, -180 el problema desapareció. espero que esto ayude.

Respondida el 07/05/2011 a las 01:40
fuente por usuario

votos
0

Estoy pensando que no le está gustando su etiqueta de liberación automática para mianotación, cuando agrega la anotación al mapa, es posible que no se conserve y luego se desasigna y cuelga, eso es lo que se me ocurre al mirar el código que publicó. Espero eso ayude

Respondida el 10/08/2009 a las 14:21
fuente por usuario

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