3

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

//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:@", "];

该数组尚未创建,因为我想先弄清楚这一点,我不知道数组中应该保存什么(字符串...)。我知道如何进行搜索我只需要知道如何比较位置。

4

1 回答 1

1

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

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

这假设您有一个 CLLocation 对象数组myLocations,您希望针对一个名为 的 CLLocation 进行过滤targetLocation

于 2013-04-11T15:16:14.620 回答