【问题标题】:Draggable Pin does not have a fixed position on mapDraggable Pin在地图上没有固定位置
【发布时间】:2014-03-31 04:15:55
【问题描述】:

目前我正在实施一项功能,用户可以手动更正地图上的图钉。我已将 annotationView 设置为 annotationView.draggable = YES;,并且我还实现了委托方法来接收新坐标。但是我现在如何告诉 mapView 拖动操作现在应该停止并且图钉在地图上获得固定位置,即使地图随后移动了也是如此。

当前的行为是,在将图钉拖动到新位置后,如果我再移动地图,图钉的固定位置只是在设备屏幕上,而不是在地图上。

感谢您的帮助:)。

代表:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)annotationView didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState
{
    if (newState == MKAnnotationViewDragStateEnding)
    {
        CLLocationCoordinate2D droppedAt = annotationView.annotation.coordinate;
        NSLog(@"Pin dropped at %f,%f", droppedAt.latitude, droppedAt.longitude);
    }
}

【问题讨论】:

  • 你可以尝试设置 annotationView.draggable = NO;在 if 语句中
  • 如何更新注释坐标?在您提供的代码中,您不会对新坐标做任何事情。
  • @DeanDavids 您不必更新注释坐标。拖动的行为为您做到了这一点。 (很明显,如果你想更新你的模型,那么就这样做,但是注释本身会为你更新。)

标签: ios ios7 mkmapview mkannotationview


【解决方案1】:

更新:

好的,修复它:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)annotationView didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState
{
    if (newState == MKAnnotationViewDragStateStarting)
    {
        annotationView.dragState = MKAnnotationViewDragStateDragging;
    }
    else if (newState == MKAnnotationViewDragStateEnding || newState == MKAnnotationViewDragStateCanceling)
    {
        annotationView.dragState = MKAnnotationViewDragStateNone;
    }
}

现在我只需要保留新坐标,我很好.. - 也许我会为状态添加一些自定义动画..:

当拖动状态变为MKAnnotationViewDragStateStarting时,设置 MKAnnotationViewDragStateDragging 的状态。如果你执行一个 动画来指示拖动的开始,以及动画 参数是 YES,在改变状态之前执行那个动画。

当状态更改为 MKAnnotationViewDragStateCanceling 或 MKAnnotationViewDragStateEnding,设置状态为 MKAnnotationViewDragStateNone。如果您在最后执行动画 拖动,并且动画参数为 YES,您应该执行该操作 改变状态之前的动画。

【讨论】:

  • +1 澄清一下,当您不使用 MKPinAnnotationView 时,这看起来像是 iOS 7 独有的行为。对于 pin 注释视图或早期版本的 iOS,这似乎是不必要的。但这是一个很好的发现。
猜你喜欢
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 2018-11-16
相关资源
最近更新 更多