通过邮政编码获取距离矩阵

Get distancematrix by postal code

我正在使用 Google 地图 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" ],
    ...
}

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

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


现在回答:

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

方向 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 also has a dedicated postal code search 网络服务。它采用可选的(多个)国家代码作为参数。它将 return 坐标供您随后在路线请求中使用。

您可以查看下方 fiddle 以获取使用标准路线服务的完整示例。试一试,看看它是否适合你。尝试输入无效的邮政编码,甚至输入有效的邮政编码,但从起点或目的地字符串中删除 "Belgium",您将看到会发生什么...

JSFiddle demo

希望对您有所帮助。