Генерация случайной гео-координаты на основе расстояния - PullRequest
4 голосов
/ 23 июня 2011

Я хочу создать метод, который возвращает случайный CLLocationCoordinate2D (или CLLocation объект) на основе другого CLLocationCoordinate2D (или CLLocation). Сгенерированная координата должна находиться в пределах определенного расстояния (, а не градус), поэтому на основе значения CLLocationDistance или его эквивалента, не CLLocationDegrees) базовой координаты в любом случайном направлении. Поэтому я в основном генерирую случайную координату внутри круговой границы.

Я понимаю, как это легко сделать в обычной системе координат (просто используйте базовый триггер для вычисления новой координаты из случайного угла и радиуса от центра границы), однако я застрял на том, как это сделать в системе широта / долгота. Я мог бы легко сделать это с помощью триггера, если бы я хотел сгенерировать случайную координату, основанную на разнице в градусах, но эти результаты были бы искажены по мере приближения к полюсу, поэтому я хочу сделать это на основе расстояния.

Я не смог найти в документации ничего, что могло бы мне помочь. Если бы был какой-то способ получить новую координату путем смещения существующей координаты на основе некоторого направления и расстояния, это, безусловно, было бы полезно, но я не нашел ничего для этого в документации или в Интернете. Есть идеи?

1 Ответ

2 голосов
/ 23 июня 2011

Пожалуйста, смотрите эту страницу . Короче говоря, это: расстояния зависят от долготы начальной и конечной точек, и лучший / быстрый способ вычислить это - использовать формулу, известную как формула Хаверсива. Здесь также есть реализация Objective C .

...