Определение расстояния с помощью mapkit

Как 1000-футовое или 1/2-мильное расстояние определено с mapkit? Или радиус от некоторого контакта или расстояние между двумя контактами.

Например, я центрирую карту на контакте A. Контакты B, C, и D находятся также на карте на различных расстояниях от контакта A. B и C в 1/2 мили от A, но D на расстоянии в 1 миля. Я хотел бы знать, что B и C в 1/2 мили от A. Как я могу вычислить это?

5
задан user230949 10 March 2010 в 07:06
поделиться

1 ответ

Поскольку вы заявили, что две разные точки являются «контактами», я предполагаю, что вы используете 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);

Вы получите расстояние в милях и сможете сравнить его оттуда. Надеюсь это поможет.

13
ответ дан 18 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: