我在使用Google Directions api时遇到麻烦。
例如,我想返回两个城市之间的距离,我发送以下命令:
<TextView
android:id="@+id/tb_receipt_details"
android:layout_width="match_parent"
android:layout_height="match_parent"
...
android:textColor="@color/tab_text_color"/>
它应该返回有关邮政编码8380(比利时)和邮政编码2030(比利时)之间的路线的详细信息。
但是结果是,我看到Google将邮政编码2030更改为4730了!
那是一个完全不同的位置。
如果我只是这样使用地图网址
https://maps.googleapis.com/maps/api/directions/json?origin=8380 Belgium&destination=2030 Belgium&sensor=false&alternatives=true&key=<mykey>
然后按预期运行。
如何强制Google不要将邮政编码更改为其他内容,而是继续使用我发送的邮政编码?
编辑
我一直在玩它,事实证明,如果我使用http://www.google.be/maps/dir/8380 Belgium/2030 Belgium
代替B-2030
作为邮政编码,则可以正常工作。
如果我使用2030
可以使我离我很近,但仍然离我15公里。
但是我宁可不要在所有邮政编码上使用诸如BE-2030
之类的前缀,也许在其他一些邮政编码上会出错,而且我们也有很多国外地址,我不想保留所有国家/地区的列表代码...
编辑
我已将这个问题作为与Google一起使用的罚单,我得到了一个答案,他们知道这一问题,开发人员正在寻求解决方案。
当我从他们那里收到更多新闻时,我将更新此帖子。
答案 0 :(得分:1)
您是对的,这是一个已知的带有4位数字的邮政编码的问题,已在许多国家的Google问题跟踪器中报告:
https://issuetracker.google.com/issues/75985322
希望Google会尽快解决。
同时,似乎唯一可靠的解决方法是,通过地点自动完成服务将邮政编码解析为其地点ID,并在路线请求中应用地点ID。
例如对您的示例执行场所自动完成请求:
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
这些请求将返回“ 8380比利时”的地方ID ChIJo0saJPpVw0cRzkf6DZ5gRBo
和“ 2030比利时”的地方ID ChIJ4ejQlRcIxEcRnGOzGMCkbYc
。
因此,现在您可以使用这些地点ID来执行路线请求并获得预期的结果
https://maps.googleapis.com/maps/api/directions/json?origin=place_id%3AChIJo0saJPpVw0cRzkf6DZ5gRBo&destination=place_id%3AChIJ4ejQlRcIxEcRnGOzGMCkbYc&mode=driving&alternatives=true&key=YOUR_API_KEY
以下是路线计算器中的相同请求:
我希望这种解决方法可能会有所帮助。