知道以下原因:
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。谢谢你的帮助!
答案 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)
}
}
请注意,我认为要刷新注释,您可能必须删除注释并将其添加回来。这些引脚更容易管理,但我知道它们不容易定制。