getDistanceFrom
теперь устарела, так что вот альтернативный ответ для тех, кто хочет это сделать.
CLLocationCoordinate2D pointACoordinate = [pointAAnnotation coordinate];
CLLocation *pointALocation = [[CLLocation alloc] initWithLatitude:pointACoordinate.latitude longitude:pointACoordinate.longitude];
CLLocationCoordinate2D pointBCoordinate = [pointBAnnotation coordinate];
CLLocation *pointBLocation = [[CLLocation alloc] initWithLatitude:pointBCoordinate.latitude longitude:pointBCoordinate.longitude];
float distanceMeters = [pointALocation distanceFromLocation:pointBLocation];
float distanceMiles = (distanceMeters / 1609.344);
[pointALocation release];
[pointBLocation release];
Как и выше, вы можете использовать float
вместо double
, и вы можете преобразовать результаты в int, если вам не требуется точность float
, например, так:
int distanceCastToInt = (int) [pointALocation distanceFromLocation:pointBLocation];
int
удобен, если вы хотите дать приблизительное представление о расстоянии в аннотации следующим образом:
pointAAnnotation.title = @"Point A";
pointAAnnotation.subtitle = [NSString stringWithFormat: @"Distance: %im",distanceCastToInt];
Например, в подзаголовке аннотации будет указано «Расстояние: 50 м».