swift MapKit注释拖动状态图标

时间:2015-05-04 08:20:38

标签: ios swift mapkit mkannotation

我遇到了一个小问题。我正在尝试为我的mapView注释使用自定义图标。麻烦的是,当用户拖动图标时,它总是变回默认图标。

我在mapView委托中设置了图标图像,这样就可以设置图标了。

func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, didChangeDragState newState: MKAnnotationViewDragState, fromOldState oldState: MKAnnotationViewDragState) {
    if newState == MKAnnotationViewDragState.Dragging {
        println("draggin it")
        view.image = UIImage(named:"pin-50.png")
    }

    if newState == MKAnnotationViewDragState.Ending {
        //update pin location
        if let customAnnot = view.annotation as? myAnnotation {
            cData.updatePinLocation(customAnnot.pinID, newValue: customAnnot.coordinate)
        }
        view.image = UIImage(named:"pin-50.png")

    }

    if newState == MKAnnotationViewDragState.Starting {
        println("start drag")
        view.image = UIImage(named:"pin-50.png")
    }

}

我尝试了一些方法来修复,但似乎没有任何帮助。即使我尝试在“didChangeDragState”委托中再次设置图标,它仍然会更改为默认图标。

{{1}}

1 个答案:

答案 0 :(得分:2)

感谢zisoft,我明白了。这是适用的代码

   if (annotation is MKUserLocation) {
        return nil
    }

    let reuseId = "pin"

    var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)

    if pinView == nil {
        pinView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        pinView.image = UIImage(named:"pin-50.png")
        pinView.canShowCallout = false
        pinView.draggable = true
    }
    else {

        pinView.annotation = annotation
    }

    return pinView