我正在根据用户添加的注释的位置创建一条路径(MKPolyline)。我想允许用户通过拖动引脚来更改路径。我目前可以做到这一点,但 MKPolyline 不会更新,直到引脚被放下。
我实施了- (void)mapView:(MKMapView *)mapView
annotationView:(MKAnnotationView *)annotationView
didChangeDragState:(MKAnnotationViewDragState)newState
fromOldState:(MKAnnotationViewDragState)oldState
为了MKAnnotationViewDragStateDragging
但它只是提醒我用户正在拖动图钉,而不通知新位置。
每次更改时,如何获取正在拖动的注释的当前位置?我希望在拖动时收到有关位置任何变化的通知,以便能够更新 MKPolyline 以跟随图钉移动,从而更好地反映路径的变化情况。
有任何想法吗?谢谢!
创建一个子类MKAnnotationView
并将该子类用于您正在拖动的注释。在该子类中:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
CLLocationCoordinate2D location = [_mapView convertPoint:self.center toCoordinateFromView:self.superview];
}
不幸的是,与 MKAnnotationView 关联的 MKAnnotation 对象在 MKAnnotationView 被删除之前不会更新其坐标。因此,您必须使用 MKAnnotationView 本身的位置,并将其转换为有效的坐标。
这还需要引用已添加注释的 MKMapView (_mapView
此处),您可以在创建视图时将其传递给视图。
如果您已设置centerOffset
注释视图的属性,您还需要考虑到:
CLLocationCoordinate2D location = [_mapView convertPoint:CGPointMake(self.center.x - self.centerOffset.x, self.center.y - self.centerOffset.y) toCoordinateFromView:self.superview];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)