计算用户与用户之间的距离;附近的位置,计算的距离一直显示为0?

时间:2013-05-08 00:04:57

标签: uitableview mkmapview mkannotation xcode4.6

我使用以下代码计算应用用户位置和附近位置(注释)之间的距离。当我试图显示"远离"作为标签中的文字,它一直说计算的距离是0.这是为什么?

*请注意,我的表格使用MapView上的坐标来确定距离。

这是我用来计算用户到附近位置的距离的代码

MapViewController.m

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

   for (MapViewAnnotation *annotation in self.mapView.annotations) {
CLLocationCoordinate2D coord = [annotation coordinate];
CLLocation *annotationLocation = [[CLLocation alloc] initWithLatitude:coord.latitude longitude:coord.longitude];
annotation.distance = [newLocation distanceFromLocation:annotationLocation];



    }

这就是我用来在标签中显示计算的距离(位于我的自定义单元格中以显示在桌面视图中):

ViewController.m

cell.distanceLabel.text = [NSString stringWithFormat:@"%f m.", calculatedDistance];

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

for (MapViewAnnotation *annotation in self.mapView.annotations) {
  CLLocationCoordinate2D coord = [annotation coordinate];
  CLLocation *userLocation = [[CLLocation alloc] initWithLatitude:coord.latitude longitude:coord.longitude];

这不是用户的位置,而是注释的位置。但奇怪的变量名称除外:

CLLocationDistance calculatedDistance = [userLocation distanceFromLocation:userLocation];

从某个位置到其自身的距离为0. 该行可能是一个错误。也许您的意思

CLLocationDistance calculatedDistance = [newLocation distanceFromLocation:userLocation];

会返回用户新位置与(错误名称)注释位置之间的距离 - 可能是您想要的。当然,你实际上只计算了距离自我计算之上的那一行,然后将它扔掉两行。

TL;博士

扔掉最后两行,它们没用。