Как 1000-футовое или 1/2-мильное расстояние определено с mapkit? Или радиус от некоторого контакта или расстояние между двумя контактами.
Например, я центрирую карту на контакте A. Контакты B, C, и D находятся также на карте на различных расстояниях от контакта A. B и C в 1/2 мили от A, но D на расстоянии в 1 миля. Я хотел бы знать, что B и C в 1/2 мили от A. Как я могу вычислить это?
Поскольку вы заявили, что две разные точки являются «контактами», я предполагаю, что вы используете MKPinAnnotationView (или какое-то другое представление аннотации). Если нет, вам придется найти местоположение каким-то другим способом.
Если у вас есть указатели на объекты аннотации для этих местоположений, вы можете легко вызвать для них -coordinate
, создать CLLocations из этих координат (используя -initWithLatitude: longitude:
) , а затем используйте метод -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];
double distanceMeters = [pointALocation getDistanceFrom:pointBLocation];
double distanceMiles = (distanceMeters / 1609.344);
Вы получите расстояние в милях и сможете сравнить его оттуда. Надеюсь это поможет.