具有半径的Objective-c搜索位置

时间:2011-06-01 01:29:48

标签: objective-c cocoa-touch ios nsarray

在objective-c中是否有一个库允许我指定一个半径和一个位置,一个位置列表并告诉我哪个位置在该半径范围内? 感谢。

1 个答案:

答案 0 :(得分:2)

如果你有CLLocations,那么这样的事情就可以了:

// Given NSArray *locations as an array of CLLocation* that you wish to filter

// and given a radius...
CLLocationDistance radius = kSomeRadius;

// and given a target you want to test against...
CLLocation* target = [[CLLocation alloc] initWithLatitude:someLat longitude:someLon];


NSArray *locationsWithinRadius = [locations objectsAtIndexes:
                                 [locations indexesOfObjectsPassingTest:
                                  ^BOOL(id obj, NSUInteger idx, BOOL *stop) {

                                      return [(CLLocation*)obj distanceFromLocation:target] < radius;

                                  }]];

[target release];

当然还有其他方法可以做到这一点。这只是一种方式。

希望有所帮助。