Проблема:
Я пытаюсь изменить геокодирование широты / долготы на ближайший перекресток улиц с помощью Google Maps API V3.Кроме того, на данный момент это не должно быть очень точным, поскольку я просто пытаюсь анонимизировать адрес, а не указывать направление.
Я видел, что данные результатов геокодирования содержат Компонент адреса Тип из "Пересечение", но это не похоже на согласованность в возвращаемых результатах - и чаще всего это не пусто.
Я также сделал некоторые взгляды на SOдля лучшего способа построить этот запрет, получая его непосредственно от Google, и самое близкое, что я видел, это: Как найти ближайшее пересечение через API Карт Google? , что на самом деле не решает мою проблему,В свете этого я предложил свое собственное решение и хотел бы получить некоторые мнения, оптимизацию, конструктивную критику или другие варианты.
Мое предварительное решение:
Поиграв с API, я решил попробовать следующий алгоритм (только для контекста, это написано на C # в консольном приложении):
Я беру адрес иразрешите это в лат / лонг.
Затем я добавляю или вычитаю определенное количество широты или долготы из координаты - порядка городского квартала (расстояние, которое корректируетсяучитывая вашу широту) и получить пешеходные маршруты между точками.Я делаю это для всех четырех направлений - поэтому первая модификация будет поддерживать широту одинаковой, но вычитать некоторую долготу.Тогда следующая модификация будет состоять в том, чтобы сохранить широту и добавить некоторую долготу и т. Д.
После получения указаний я анализирую результаты и проверяю начало и конецадрес.Если они разные, я вытаскиваю названия улиц и воспринимаю их как «перекресток» (хотя иногда это приводит к параллельным улицам - опять же, просто пытаюсь получить приблизительную оценку).
Если я не нахожу две разные улицы, я расширяю расстояние до конечного пункта назначения и повторяю процесс.
Пока это работает достаточно хорошо, но, очевидно, это дорогостоящий процесскак в плане времени, так и в использовании моего выделенного лимита запросов.Кроме того, я проверил условия обслуживания API, и пока я включаю их отказ от ответственности и отображаю результаты на карте Google, я думаю, что я в порядке.
Мои вопросы к сообществу:
Как повысить эффективность алгоритма?В частности, сколько раз я вызываю API (код реализации не является проблемой)
Есть ли другой способ сделать это с помощью API Карт Google?В вопросе SO , упомянутом выше , решение состояло в том, чтобы зациклить номера зданий.Я не уверен, что именно это означает - поэтому любые разъяснения были бы хорошими.
Как упомянуто выше, я не верю, что это нарушает условия обслуживания - но яошибочно?
Есть ли другой веб-интерфейс для использования, который может удовлетворить мои потребности лучше?Возможно, Bing или какой-либо другой поставщик?
Большое спасибо за любую помощь.
ОБНОВЛЕНИЕ: Я столкнулся с лимитом запросов длядень, поэтому я не смогу проверить какие-либо предложения против Google сегодня, но я также все еще открыт для использования другого API.Спасибо.