我有一个位置数组,当我添加另一个位置时,我希望能够检查数组中的其他位置是否在新块的块内。这是我必须找到当前位置的代码:
//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 ...)。我知道如何进行搜索我只需要知道如何比较位置。
答案 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进行过滤。