如何比较位置的坐标与用户的当前坐标

时间:2012-12-27 16:00:01

标签: iphone objective-c ios cllocationmanager cllocationdistance

我正在将位置的坐标与用户的当前坐标进行比较。输出的距离如下:6056609.511004132946254686

我不确定这是什么测量。我希望最终的测量距离以km为单位。

 // location of deal
CLLocation *locA = [[CLLocation alloc] initWithLatitude:latNum longitude:lngNum];

// user's current location
CLLocation *locB = [[CLLocation alloc] initWithLatitude:currentLatitude longitude:currentLongitude];

CLLocationDistance distanceToDeal = [locA distanceFromLocation:locB];

3 个答案:

答案 0 :(得分:4)

对文档的粗略阅读将使这一点清楚。如果打开快速帮助检查器(在Xcode 4.5中,请按命令 + 选项 + 2 或从中选择“显示快速帮助检查器”) “查看”菜单中的“实用程序”部分,然后单击代码中的distanceFromLocation,它会为您提供此方法的文档,这清楚地表明它以米为单位。或者,当您将鼠标移动到代码中的distanceFromLocation方法上时,按住选项键,然后单击(同时按住选项键)我会看到一个在线帮助popover。

在此处发布问题之前,您应该查看Apple文档。

答案 1 :(得分:2)

以米为单位,来自Apple文档:

CLLocationDistance

  

距离现有位置的距离测量值(以米为单位)。

typedef double CLLocationDistance

  

可用性适用于iOS 2.0及更高版本。在CLLocation.h中声明

答案 2 :(得分:2)

Apple doc中所述,distanceFromLocation函数以米为单位返回值。所以你要做的就是将米转换为km;)

CLLocation *locA = [[CLLocation alloc] initWithLatitude:latNum longitude:lngNum];
CLLocation *locB = [[CLLocation alloc] initWithLatitude:currentLatitude longitude:currentLongitude];

//Compute distance in meters
CLLocationDistance distanceToDeal = [locA distanceFromLocation:locB];

//Convert meters to km
double km = distanceToDeal/1000;