0

我有一个 MKMapView,我正在添加一个 MKPlacemark 来表示用户刚刚选择的建筑物的位置。用户一次只能选择一个建筑物,而我只是想在他们选择新建筑物时将地标移动到新建筑物。在他们选择的第一座建筑物上,它运行良好并在地图上放置了一个图钉。当我尝试调用setCoordinate地标以在他们选择新建筑物时更新标记的位置时,我得到了-[MKPlacemark setCoordinate:]: unrecognized selector sent to instance

在 MyViewController.h 我有:

@property (nonatomic, strong)MKPlacemark *selectedBuildingPlacemark;

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

我认为 MKPlacemark 符合 MKAnnotation,因此应该实现setCoordinate. 有人可以告诉我我的方式的错误吗?

4

2 回答 2

3

的文档MKAnnotation说:

支持拖动的注解应该实现这个方法来更新注解的位置。

所以该方法setCoordinate:是可选的,仅由支持拖动的类实现。的文档MKPlacemark没有引用该方法,因此未实现。

因此,您应该在每次选择新建筑物时创建一个新实例。

于 2012-03-10T15:19:09.957 回答
1

如果您不需要特别使用 an MKPlacemark(它看起来不像,因为您为 addressDictionary 传递 nil),您可以改用MKPointAnnotation该类。

MKPointAnnotation实现MKAnnotation但添加了一个setCoordinate方法。

于 2012-03-10T18:26:54.217 回答