Google距离矩阵 - 限制国家/地区

时间:2016-05-17 13:09:13

标签: php json google-maps-api-3

我正在使用Google Distance Matrix API来查找两个位置的距离。我需要限制搜索到英国,因为我遇到问题,如果你搜索一个不完整的邮政编码,即'L20',谷歌立即建议在美国的'L20'区域显然导致搜索没有获得结果。

如何将Google假设/搜索条件限制在特定国家/地区?

这是我目前的代码:

function dist($addr, $addr2) {
    $url = 'https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=' . urlencode ( $addr ) . '&destinations=' . urlencode ( $addr2 ) . '&key=';
    return getCachableContent ( $url );
}

1 个答案:

答案 0 :(得分:0)

您可以尝试将Google Geocoding API与Google Distance Matrix API一起使用,作为解决方案的一部分。地理编码API将能够提供给定地址的国家/地区信息(请参阅https://developers.google.com/maps/documentation/geocoding/start,例如Google地理编码API输出)。

首先,您可以将地址传递给地理编码API,以确定该地址的国家/地区值是否为英国。如果是,则继续将值传递给Distance API。

更新1:基于原始代码的示例代码

拿原始代码:

function dist($addr, $addr2) {
    $url = 'https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=' . urlencode ( $addr ) . '&destinations=' . urlencode ( $addr2 ) . '&key=';
    return getCachableContent ( $url );
}

它可能看起来像这样:

function dist($addr, $addr2) {
    $geocodeurl1 = 'https://maps.googleapis.com/maps/api/geocode/json?address=' . urlencode ( $addr ) . '&key=';        

    $geocodeurl2 = 'https://maps.googleapis.com/maps/api/geocode/json?address=' . urlencode ( $addr2 ) . '&key=';

    //Then do some checking here to see if the country values for both returns above are UK based (e.g. if statements). If both are UK then proceed to perform your original call to the distancematrix  
    $distanceurl = 'https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=' . urlencode ( $addr ) . '&destinations=' . urlencode ( $addr2 ) . '&key=';
    return getCachableContent ( $distanceurl );
}