我该如何使用Swift中的MapKit实现用户在地图上将注释从一个位置拖到另一个位置?当我的地图视图委托创建注释视图时,我已将注释视图设置为可拖动,代码如下:
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
var v : MKAnnotationView! = nil
if annotation is MyAnnotation {
let ident = "bike"
v = mapView.dequeueReusableAnnotationView(withIdentifier:ident)
if v == nil {
v = MyAnnotationView(annotation:annotation, reuseIdentifier:ident)
}
v.annotation = annotation
v.isDraggable = true
}
return v
}
结果是用户可以“有点”拖动注释 - 但仅限一次。之后,注释将无法拖动,更糟糕的是,注释现在不再“属于”地图 - 当地图被滚动/平移时,注释保持不变而不是随地图滚动/平移。我做错了什么?
mapView(_:annotationView:didChange:fromOldState:)
方法从未被调用。 - mertMKAnnotationViewDragState
的引用现在显然是MKAnnotationView.DragState
)。 - RobmapView(_:annotationView:didChange:fromOldState:)
的讨论因为不再必要已经被剪掉了几个版本。 - matt