0

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

例如:

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" ], 
    ... 
} 
+0

你有没有尝试过任何其他的机会? – MrUpsidown

+0

我认为邮政编码不被API视为地址。 – MrUpsidown

+0

哦,顺便说一下,2566似乎是比利时的无效邮政编码。你有我的downvote。 – MrUpsidown

回答

1

得到一些更多的信息后,我想我可以想出一个答案。

仅限比利时吗?你不可以让他们只选择有效的邮政编码吗?这将避免许多错误......但如果你不能,那么你可以尝试其他选择。


现在的答案:

您提到要计算两个地方(与distancematrix)之间的距离。如果需要计算仅两个地点之间的距离,则不需要使用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 webservice。它采用可选(多个)国家代码作为参数。它将返回您可以在您的路线请求中使用的坐标。

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

JSFiddle demo

希望这有助于。

相关问题