Pregunta

Tengo un MKMapView al que estoy agregando un único MKPlacemark para representar la ubicación de un edificio que el usuario acaba de seleccionar.El usuario solo puede seleccionar un edificio a la vez y simplemente quiero mover la marca de posición al nuevo edificio cuando seleccione un edificio nuevo.En el primer edificio que seleccionan, funciona bien y coloca un marcador en el mapa.Cuando intento llamar setCoordinate Sin embargo, en la marca de posición para actualizar la posición del marcador cuando seleccionan un nuevo edificio, aparece -[MKPlacemark setCoordinate:]: unrecognized selector sent to instance

En MyViewController.h tengo:

@property (nonatomic, strong)MKPlacemark *selectedBuildingPlacemark;

En MyViewController.m

@synthesize selectedBuildingPlacemark;

...

if (self.selectedBuildingPlacemark == nil) {
        self.selectedBuildingPlacemark = [[MKPlacemark alloc] initWithCoordinate:myCoord addressDictionary:nil];
        [mapView addAnnotation:self.selectedBuildingPlacemark];
    }
    else {
        [self.selectedBuildingPlacemark setCoordinate:myCoord];
    }

Pensé que MKPlacemark se ajustaba a MKAnnotation y, por lo tanto, debería implementar setCoordinate.¿Alguien puede mostrarme el error de mis caminos?

¿Fue útil?

Solución

la documentacion de MKAnnotation dice:

Las anotaciones que admiten el arrastre deben implementar este método para actualizar la posición de la anotación.

Entonces el método setCoordinate: es opcional y solo lo implementan clases que admiten el arrastre.la documentacion de MKPlacemark no hace referencia a ese método, por lo que no está implementado.

Por lo tanto, debes crear una nueva instancia cada vez que selecciones un nuevo edificio.

Otros consejos

Si no necesita específicamente utilizar un MKPlacemark (no lo parece porque estás pasando nil para el diccionario de direcciones), puedes usar el MKPointAnnotation clase en su lugar.

MKPointAnnotation implementos MKAnnotation pero agrega un setCoordinate método.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top