iOS比较GPS位置

时间:2012-09-04 06:14:50

标签: ios gps cllocationmanager

我正在创建一个应用程序,需要确定我当前的位置(在didUpdateLocation中重新定位)是否存在于我拥有的一组地理坐标中。现在我明白,比较double / float值的相等性可能容易出错,因为地理坐标中涉及的精度非常高。 GPS中的轻微不准确可能会使我的算法偏离轨道。因此,我需要将它与一些误差范围进行比较。

如何将2个CLLocations与误差范围进行比较?或者确定位置读数中的错误(我不认为这是可能的,因为CLLocationManager会纠正它)。

提前致谢:)

2 个答案:

答案 0 :(得分:4)

在每个CLLocation实例中都有一个声明为@property(readonly, nonatomic) CLLocationAccuracy horizontalAccuracy;的属性。您可以做的是如下例程:

-(BOOL)isLocation:(CLLocation*)location inRangeWith:(CLLocation*)otherLocation{
    CLLocationDistance delta = [location distanceFromLocation:otherLocation];
    return (delta < location.horizontalAccuracy);
}

你可以制作更复杂的逻辑,因为两个地点都有这个属性......

干杯。 【ツ】

答案 1 :(得分:2)

您可以使用CoreLocation方法distanceFromLocation:来查找用户位置与另一个点之间的距离。如果距离小于您决定的任何阈值,那么您可以假设位置相同。

CLLocationDistance threshold = 5.0;  // threshold distance in meters

// note: userLocation and otherLocation are CLLocation objects
if ([userLocation distanceFromLocation:otherLocation] <= threshold) {
    // same location
}