拖动时更新MKPointAnnotation对象

时间:2016-08-04 08:26:41

标签: ios swift2 mapkit swift3 mapkitannotation

我想了解如何在拖动时更新我的​​annotation标题,因为所有annotation属性仅为get

我试过的代码:

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, didChange newState: MKAnnotationViewDragState, fromOldState oldState: MKAnnotationViewDragState) {

    switch (newState) {
    case .starting:
        //view.dragState = .dragging
        print("dragging.....")
    case .ending, .canceling:
        // view.dragState = .none
        let lat = view.annotation?.coordinate.latitude
        let long = view.annotation?.coordinate.longitude
        let coordinates = CLLocationCoordinate2D(latitude: lat!, longitude: long!)
        print(" pin lat \(lat) long \(long)")

        //Error here - title is get only property
        view.annotation?.title = "New Location"

    default: break
    }

}

1 个答案:

答案 0 :(得分:3)

MKMapViewDelegate的拖动方法中,注释是只读的,因此您可以使用didSelectAnnotationView的{​​{1}}方法,因为在拖动之前它会调用MKMapViewDelegate方法,因为该声明didSelectAnnotationView类型的一个selectedAnnotation实例属性。

MKPointAnnotation

现在在var selectedAnnotation: MKPointAnnotation? 方法中使用此属性。

didSelectAnnotationView

现在更改标题使用此注释

func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {
    selectedAnnotation = view.annotation as? MKPointAnnotation
}