【问题标题】:Get distancematrix by postal code通过邮政编码获取距离矩阵
【发布时间】:2023-03-06 18:33:01
【问题描述】:

我正在使用 Google Maps API 的距离矩阵来获取比利时两个邮政编码之间的距离。我面临在整个地址中评估国家的问题。有没有办法在请求中强制国家?

例如:

https://maps.googleapis.com/maps/api/distancematrix/json?origins=Belgium+1200&destinations=Belgium+2566

在菲律宾而不是比利时提供目的地:

{
    "destination_addresses" : [ "Belgium, Dasmariñas, Cavite, Philippines" ],
    "origin_addresses" : [ "1200, Belgique" ],
    ...
}

如果我在请求中使用国家(比利时)的法语名称,也会出现同样的问题:

https://maps.googleapis.com/maps/api/distancematrix/json?origins=Belgium+1200&destinations=Belgium+2566

在法国提供目的地:

{
    "destination_addresses" : [ "2566 Rue de Belgique, 66140 Canet-en-Roussillon, France" ],
    "origin_addresses" : [ "1200, Belgique" ],
    ...
}

【问题讨论】:

  • 你有没有尝试过别的什么?
  • 我认为邮政编码不被 API 视为地址。
  • 哦,顺便说一句,2566 在比利时似乎是一个无效的邮政编码。你得到了我的反对。
  • 嗯,你说得对,这个邮政编码似乎不存在。但无论如何,我的问题仍然有效,不值得一票否决:有没有办法强迫这个国家?换句话说,我希望得到目的地不存在的答案,而不是在法国或菲律宾的某个地方
  • 为了响应您以前的 cmets,API 会考虑邮政编码。是的,它适用于其他一些邮政编码,但我无法全部测试。由于我的用户首先选择了他们的国家/地区,因此我想确保为他们提供正确的答案。

标签: javascript google-maps-api-3 google-distancematrix-api


【解决方案1】:

在获得更多信息后,我想我可以想出一个答案。

仅适用于比利时吗?你不能让他们只选择有效的邮政编码吗?这样可以避免很多错误...但是如果您不能,那么您可以尝试其他选项。


现在来回答:

您提到要计算两个地方之间的距离(使用距离矩阵)。如果您只需要计算 2 个地点之间的距离,则不需要使用 distanceMatrix。您可以使用标准的 Directions API(或作为 Google Maps Javascript API v3 一部分的服务)。在任何情况下,使用 Directions 和 distanceMatrix,您都必须在地图上显示服务返回的信息(这是他们的服务条款)。

Directions API 的优势在于,您可以使用 IANA language region subtagsregion 参数将您的请求偏向特定地区(国家)。

var start = "1200, Belgium";
var end = "2500, Belgium";
var method = 'DRIVING';
var request = {
    origin: start,
    destination: end,
    region: 'BE',
    travelMode: google.maps.DirectionsTravelMode[method]
};

文档在这里:https://developers.google.com/maps/documentation/javascript/directions#Directions

在检索路线之前,您还可以使用其他服务以确保起点和终点值正确。

Geocoder 可以是一个(您也可以使用区域代码来区分您的请求)。

Geonames.org 也有一个专用的postal code search 网络服务。它需要一个可选的(多个)国家代码作为参数。它将返回您可以在路线请求中使用的坐标。

您可以查看下面的小提琴以获取使用标准方向服务的完整示例。玩它,看看它是否适合你。尝试输入无效的邮政编码,甚至使用有效的邮政编码,但从始发地或目的地字符串中删除“比利时”,您会看到会发生什么...

JSFiddle demo

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多