Построение пересечений из Google Maps API - PullRequest
6 голосов
/ 24 августа 2011

Проблема:

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

Я видел, что данные результатов геокодирования содержат Компонент адреса Тип из "Пересечение", но это не похоже на согласованность в возвращаемых результатах - и чаще всего это не пусто.

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

Мое предварительное решение:

Поиграв с API, я решил попробовать следующий алгоритм (только для контекста, это написано на C # в консольном приложении):

  • Я беру адрес иразрешите это в лат / лонг.

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

  • После получения указаний я анализирую результаты и проверяю начало и конецадрес.Если они разные, я вытаскиваю названия улиц и воспринимаю их как «перекресток» (хотя иногда это приводит к параллельным улицам - опять же, просто пытаюсь получить приблизительную оценку).

  • Если я не нахожу две разные улицы, я расширяю расстояние до конечного пункта назначения и повторяю процесс.

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

Мои вопросы к сообществу:

  • Как повысить эффективность алгоритма?В частности, сколько раз я вызываю API (код реализации не является проблемой)

  • Есть ли другой способ сделать это с помощью API Карт Google?В вопросе SO , упомянутом выше , решение состояло в том, чтобы зациклить номера зданий.Я не уверен, что именно это означает - поэтому любые разъяснения были бы хорошими.

  • Как упомянуто выше, я не верю, что это нарушает условия обслуживания - но яошибочно?

  • Есть ли другой веб-интерфейс для использования, который может удовлетворить мои потребности лучше?Возможно, Bing или какой-либо другой поставщик?

Большое спасибо за любую помощь.

ОБНОВЛЕНИЕ: Я столкнулся с лимитом запросов длядень, поэтому я не смогу проверить какие-либо предложения против Google сегодня, но я также все еще открыт для использования другого API.Спасибо.

1 Ответ

1 голос
/ 21 июня 2015

Старый вопрос, но поскольку в первоначальном плакате говорилось, что они открыты для решений, отличных от Google, Geonames имеет веб-API для этого для США. См. Обзор GeoNames WebServices и http://www.geonames.org/maps/us-reverse-geocoder.html#findNearestIntersection

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...