Frage

Ich habe eine MKMapView, der ich eine einzelne MKPlacemark hinzufüge, um den Standort eines Gebäudes darzustellen, das der Benutzer gerade ausgewählt hat.Der Benutzer kann jeweils nur ein Gebäude auswählen und ich möchte einfach die Ortsmarkierung auf das neue Gebäude verschieben, wenn er ein neues Gebäude auswählt.Beim ersten ausgewählten Gebäude funktioniert es einwandfrei und platziert eine Markierung auf der Karte.Wenn ich versuche anzurufen setCoordinate auf der Ortsmarkierung, um die Position der Markierung zu aktualisieren, wenn sie ein neues Gebäude auswählen -[MKPlacemark setCoordinate:]: unrecognized selector sent to instance

In MyViewController.h habe ich:

@property (nonatomic, strong)MKPlacemark *selectedBuildingPlacemark;

In 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];
    }

Ich dachte, MKPlacemark entspreche MKAnnotation und sollte daher implementiert werden setCoordinate.Kann mir jemand den Irrtum meines Verhaltens zeigen?

War es hilfreich?

Lösung

Die Dokumentation von MKAnnotation sagt:

Anmerkungen, die das Ziehen unterstützen, sollten diese Methode implementieren, um die Position der Anmerkung zu aktualisieren.

Also die Methode setCoordinate: ist optional und wird nur von Klassen implementiert, die das Ziehen unterstützen.Die Dokumentation von MKPlacemark verweist nicht auf diese Methode und ist daher nicht implementiert.

Daher sollten Sie jedes Mal eine neue Instanz erstellen, wenn Sie ein neues Gebäude auswählen.

Andere Tipps

Wenn Sie nicht unbedingt eine verwenden müssen MKPlacemark (Es sieht nicht so aus, weil Sie nil für das AddressDictionary übergeben), Sie könnten das verwenden MKPointAnnotation Klasse stattdessen.

MKPointAnnotation implementiert MKAnnotation fügt aber a hinzu setCoordinate Methode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top