我使用Google Maps API的距离矩阵来获取比利时两个邮政编码之间的距离。我面临的问题是,整个地址都要对国家进行评估。有没有办法强制要求国家?
例如:
在菲律宾而不是比利时提供目的地:
{
"destination_addresses" : [ "Belgium, Dasmariñas, Cavite, Philippines" ],
"origin_addresses" : [ "1200, Belgique" ],
...
}
如果我在请求中使用国家/地区的法语名称(Belgique),则同样的问题:
在法国提供目的地:
{
"destination_addresses" : [ "2566 Rue de Belgique, 66140 Canet-en-Roussillon, France" ],
"origin_addresses" : [ "1200, Belgique" ],
...
}
答案 0 :(得分:1)
在获得更多信息后,我想我可以拿出答案。
仅适用于比利时吗?你能否让他们只选择有效的邮政编码?这样可以避免许多错误...但如果你不能,那么你可以尝试其他选择。
现在回答:
您提到要计算两个地方之间的距离(使用distancematrix)。如果需要计算仅2个位置之间的距离,则无需使用distanceMatrix。您可以使用标准Directions API(或服务作为Google Maps Javascript API v3的一部分)。在任何情况下,使用Directions和distanceMatrix,您必须在地图上显示服务返回的信息(这在他们的服务条款中)。
Directions API的优势在于您可以使用IANA language region subtags和region
参数将您的请求与特定地区(国家/地区)进行联系。
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网络服务。它需要一个可选的(多个)国家/地区代码作为参数。它将返回您可以在路线请求中使用的坐标。
您可以使用标准路线服务查看以下小提琴,以获取完整示例。玩它,看看它是否适合你。尝试输入无效的邮政编码,甚至使用有效的邮政编码,但从原点或目的地字符串中删除“比利时”,您将看到会发生什么......
希望这有帮助。