代码之家  ›  专栏  ›  技术社区  ›  GuidoG

google directions api不断更改目标postalcode

  •  0
  • GuidoG  · 技术社区  · 6 年前

    我在使用Google Directions API时遇到问题。

    例如,我想检索两个城市之间的距离,我发送以下命令:

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

    应返回Postalcode 8380(比利时)和Postalcode 2030(比利时)之间路线的详细信息。

    但结果我发现谷歌已经将Postalcode2030改为4730!
    那是一个完全不同的地方。

    也见此 enter image description here

    如果我只使用这样的地图URL

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

    然后它按预期工作。

    我怎么能强迫谷歌不把邮政编码改成其他东西,而是继续使用我发送的邮政编码呢?

    编辑
    我一直在玩它,结果发现如果我用 B-2030 代替 2030 作为Postalcode,它可以按预期工作。
    如果我使用 BE-2030 它让我很近,但仍有15公里远。
    但是使用类似的前缀 B- 在所有的邮政编码上,我宁愿不这样做,也许它会对其他一些邮政编码产生错误,而且我们还有很多外国地址,我不想保留所有国家代码的列表…

    编辑
    我把这个问题当成了谷歌的一张罚单,我收到了一个答案,他们知道这个问题,开发人员正在寻找解决办法。
    当我收到他们更多的消息时,我会更新这篇文章。

    1 回复  |  直到 6 年前
        1
  •  1
  •   xomena    6 年前

    你是对的,这是一个已知的问题,4位数的邮政编码在谷歌问题追踪系统中报告,适用于许多国家:

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

    希望谷歌能尽快解决。

    同时,似乎唯一可靠的解决方法是通过Place AutoComplete服务将邮政编码解析为其位置ID,并在方向请求中应用位置ID。

    例如,为您的示例执行place autocomplete请求:

    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

    这些请求将返回地点ID ChIJo0saJPpVw0cRzkf6DZ5gRBo 用于“8380比利时”和地点ID ChIJ4ejQlRcIxEcRnGOzGMCkbYc “2030比利时”。

    所以,现在您可以使用这些位置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

    以下是方向计算器中的相同请求:

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

    我希望这个解决方法会有所帮助。

    推荐文章