在IOS中检查两个位置的接近程度

时间:2013-04-11 13:52:32

标签: ios objective-c cocoa-touch

我有一个位置数组,当我添加另一个位置时,我希望能够检查数组中的其他位置是否在新块的块内。这是我必须找到当前位置的代码:

//Geocoding Block
[self.geoCoder reverseGeocodeLocation: locationManager.location completionHandler:
 ^(NSArray *placemarks, NSError *error) {

     //Get nearby address
     CLPlacemark *placemark = [placemarks objectAtIndex:0];

     //String to hold address
    locatedAt = [[placemark.addressDictionary valueForKey:@"FormattedAddressLines"]    componentsJoinedByString:@", "];

数组尚未创建,因为我想首先想出这个,我不知道数组中应该保留什么(string ...)。我知道如何进行搜索我只需要知道如何比较位置。

1 个答案:

答案 0 :(得分:1)

您可以在CLLocation上使用the distanceFromLocation: method获取两个位置之间的距离。 (您可以使用myPlacemark.location从CLPlacemark中获取CLLocation。)因此,如果您有一个CLLocation对象数组,并且您想要找到一个块内的那些(1/20英里,或大约80米) ),你可以这样做:

NSMutableArray *locationsWithinOneBlock = [NSMutableArray new];
for (CLLocation *location in myLocations) {
    if ([location distanceFromLocation:targetLocation] <= 80.0)
        [locationsWithinOneBlock addObject:location];
}

这假设您有一个CLLocation对象的数组myLocations,您想要针对名为targetLocation的单个CLLocation进行过滤。