Построение перекрестков с помощью Google Maps API

Проблема:

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

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

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

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

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

  • Я беру адрес и преобразовываю его в широту / долготу.

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

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

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

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

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

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

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

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

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

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

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

6
задан Community 23 May 2017 в 11:51
поделиться