Расчет длины маршрута - PullRequest
2 голосов
/ 20 апреля 2010

У меня есть карта с около 80 аннотациями. Я хотел бы сделать 3 вещи.

1) Из моего текущего местоположения я хотел бы узнать фактическое расстояние маршрута до этой позиции. Не линейное расстояние.

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

3) Я хотел бы знать ближайшую аннотацию к моей возможности, используя расстояние маршрута. Нелинейное расстояние.

Я думаю, что ответ на все эти три вопроса будет одинаковым. Но учтите, что я не хочу создавать маршрут, я просто хочу узнать расстояние до аннотации.

Я надеюсь, что кто-то может мне помочь.

С наилучшими пожеланиями, Пол Пилен

Ответы [ 3 ]

2 голосов
/ 29 апреля 2010

Насколько я понимаю из вашего поста, я полагаю, что вы ищете формула Хаверсайна . К счастью для вас, существует целый ряд реализаций Objective-C , хотя писать свои собственные тривиально, когда перед вами формула.

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

1 голос
/ 24 апреля 2010

Я думаю, как указывалось ранее, ваш запрос был бы чрезвычайно тяжелым для API карт Google, если вы выполняете именно то, что говорите. Вам нужна вся эта информация сразу? Возможно, сначала было бы достаточно запросить только некоторые расстояния, основываясь на некоторой эвристике или потребностях пользователя.

Чтобы получить расстояния, вы можете использовать объект Google Maps GDirections ... как указано здесь (внизу страницы есть " Маршруты и шаги " раздел, с расширенным примером .

"The GDirections object also supports multi-point directions, which can be constructed using the GDirections.loadFromWaypoints() method. This method takes an array of textual input addresses or textual lat/lon points. Each separate waypoint is computed as a separate route and returned in a separate GRoute object, each of which contains a series of GStep objects."

Использование API Карт Google в iPhone не должно быть слишком сложным, и я думаю, что ваш вопрос не касается этого, но если вам нужен какой-то простой пример, вы можете посмотреть на этот вопрос и выделите ответ.

Удачи!

0 голосов
/ 23 апреля 2010

Вычисление расстояния маршрута до 80 мест наверняка потребует большого объема вычислений со стороны Google, и я не могу представить, что вы могли бы делать такие запросы к API Карт Google, если бы это было возможно на мобильном устройстве без жестких ограничений по телефонному соединению или ограничениям скорости на сервере.

К сожалению, вычисление расстояния маршрута, а не геометрического расстояния, является очень дорогим вычислением, включающим много данных об области - данных, которые вы почти наверняка не имеете. К сожалению, это означает, что Core Location или MapKit не могут вам помочь.

Какую проблему вы пытаетесь решить, точно? Может быть и другая эвристика, отличная от расстояния по маршруту, которое вы можете использовать для аппроксимации некоторого ранжирования расстояния.

...