API направлений Google постоянно меняет почтовый индекс получателя - PullRequest
0 голосов
/ 29 ноября 2018

У меня проблемы с использованием API-интерфейса Google.

Например, я хочу получить расстояние между двумя городами, я отправляю следующую команду:

https://maps.googleapis.com/maps/api/directions/json?origin=8380 Belgium&destination=2030 Belgium&sensor=false&alternatives=true&key=<mykey>

она должна вернуть подробностио маршруте между почтовым индексом 8380 (Бельгия) и почтовым индексом 2030 (Бельгия).

Но в результате я вижу, что Google изменил почтовый индекс 2030 на 4730!
Это совершенно другое место.

См. Также enter image description here

Если я просто использую URL-адрес карты, подобный этому

http://www.google.be/maps/dir/8380 Belgium/2030 Belgium

, тогда он работает, как и ожидалось.

Как я могу заставить Google НЕ изменять почтовый индекс на что-то другое, а продолжать использовать почтовый индекс, который я отправляю?

РЕДАКТИРОВАТЬ
Я играл с ним, и оказалось, что если я использую B-2030 вместо 2030 в качестве почтового индекса, он будет работать как положено.
Если я использую BE-2030, это приближает меня, но все еще на 15 км дальше.
Но использование префикса типа B- для всех почтовых индексов - это то, чего я, скорее всего, не сделаю, возможно, он будет работать неправильно на некоторых других почтовых кодах, иу нас также есть много иностранных адресов, я не хочу вести список всех кодов стран ...

РЕДАКТИРОВАТЬ
Я поставил этот вопрос как билет в Google, яполучил ответ, что им известно об этой проблеме, и разработчики ищут исправление.
Я обновлю этот пост, когда получу от них больше новостей.

1 Ответ

0 голосов
/ 02 декабря 2018

Вы правы, это известная проблема с 4-значными почтовыми кодами, о которой сообщалось в системе отслеживания проблем Google для нескольких стран:

https://issuetracker.google.com/issues/75985322

Надеемся, что Google решит еескоро.

Между тем, похоже, что единственный надежный обходной путь заключается в разрешении почтовых индексов по их идентификаторам мест с помощью сервиса автозаполнения мест и применении идентификаторов мест в запросах маршрутов.

Например, выполнение запросов автозаполнения местдля ваших примеров:

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=8380%20Belgium&types=(regions)&key=YOUR_API_KEY

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=2030%20Belgium&types=(regions)&key=YOUR_API_KEY

Эти запросы вернут идентификатор места ChIJo0saJPpVw0cRzkf6DZ5gRBo для '8380 Бельгия' и идентификатор места ChIJ4ejQlRcIxEcRnGOzGMCkbYc для '2030 Бельгия '.

Итак, теперь вы можете выполнить запрос маршрута с этими идентификаторами мест и получить ожидаемые результаты

https://maps.googleapis.com/maps/api/directions/json?origin=place_id%3AChIJo0saJPpVw0cRzkf6DZ5gRBo&destination=place_id%3AChIJ4ejQlRcIxEcRnGOzGMCkbYc&mode=driving&alternatives=true&key=YOUR_API_KEY

Вот тот же запрос в калькуляторе маршрутов:

https://directionsdebug.firebaseapp.com/?origin=place_id%3AChIJo0saJPpVw0cRzkf6DZ5gRBo&destination=place_id%3AChIJ4ejQlRcIxEcRnGOzGMCkbYc&mode=driving&alternatives=true

Я надеюсь, что этот обходной путь может быть полезным.

...