0

我使用此协议方法来获取用户放置图钉的坐标。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)annotationView didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState 
...

在这种方法中,我检查该引脚是否太靠近地图上的某个其他引脚,当发生这种情况时,我想以编程方式将引脚移动到距离该引脚 100 米远的地方。但我不知道如何以及实现这一点的最佳方法是什么?

4

2 回答 2

0

您可以使用此方法获取与其他引脚注释的距离

- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location
于 2013-08-06T12:27:21.967 回答
0

您可以检查新引脚与所有其他引脚之间的距离是否小于 100m('MKMapView' 'annotations' 属性)。要计算每个引脚之间的距离,您可以使用CLLocation

CLLocation *pointALocation = [[CLLocation alloc] initWithLatitude:latitudeA longitude:longitudeA];
CLLocation *pointBLocation = [[CLLocation alloc] initWithLatitude:latitudeB longitude:longitudeB];

double distanceInMeters = [pointALocation getDistanceFrom:pointBLocation];

比块销添加/移动如果这个距离小于100

于 2013-08-06T12:41:46.023 回答