2

現在の場所(didUpdateLocation :のrecd)が、私が持っている一連の地理座標の中に存在するかどうかを判断する必要があるアプリケーションを作成しています。地理座標に含まれる精度が非常に高いため、等式のdouble/float値を比較するとエラーが発生しやすくなる可能性があることを理解しました。GPSのわずかな不正確さは、私のアルゴを軌道から外す可能性があります。したがって、それをある程度の許容誤差と比較する必要があります。

2つのCLLocationを許容誤差で比較するにはどうすればよいですか?または、位置の読み取りのエラーを特定します(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 に答える