2

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

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

提前致谢 :)

4

2 回答 2

4

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

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

您可以制作更复杂的逻辑,因为两个位置都具有该属性...

干杯。【ツ】</p>

于 2012-09-04T06:32:52.173 回答
3

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

CLLocationDistance threshold = 5.0;  // threshold distance in meters

// note: userLocation and otherLocation are CLLocation objects
if ([userLocation distanceFromLocation:otherLocation] <= threshold) {
    // same location
}
于 2012-09-04T06:27:47.737 回答