使用MKPinAnnotationView和MKAnnotationView更新用户位置

时间:2015-01-24 02:51:50

标签: ios swift mkmapview

知道以下原因:

    let reuseId = "pin"
    var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
    pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
    pinView!.annotation = annotation
    pinView!.canShowCallout = false
    pinView!.draggable = true

允许可拖动的注释在以下情况下快照回到用户位置:

    let reuseId = "pin"
    var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
    pinView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
    pinView!.annotation = annotation
    pinView!.canShowCallout = false
    pinView!.draggable = true

不会快速回到用户位置。

这是在viewForAnnotation函数中实现的,它允许您更改当前位置引脚。

我正在尝试编辑用户位置的引脚,我希望它可以拖动,但我希望它在完成拖动时快速回到用户位置。它只在MKPinAnnotationView中执行,但我需要它才能用于MKAnnotatioView。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我认为不幸的是,这是如何实现子类的。

我认为解决方法是使用类似的东西:

- (void)mapView:(MKMapView *)mapView 
        annotationView:(MKAnnotationView *)annotationView 
        didChangeDragState:(MKAnnotationViewDragState)newState 
        fromOldState:(MKAnnotationViewDragState)oldState 
{
    if (newState == MKAnnotationViewDragStateEnding)
    {
        //reset CLLocationCoordinate2D of MKAnnotation to the old coordinate (i.e. where the annotation view was before dragging)
    }
}

请注意,我认为要刷新注释,您可能必须删除注释并将其添加回来。这些引脚更容易管理,但我知道它们不容易定制。