谷歌反向地理编码返回null

时间:2014-09-21 13:12:36

标签: php google-maps geocode

我目前正在使用此功能从instagram图片反转地理编码latlng:

 function getGeoCountry($geoAddress) {
    $url = 'http://maps.google.com/maps/api/geocode/json?address=' . $geoAddress .'&sensor=false'; 
    //$get     = file_get_contents($url);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $response = curl_exec($ch);
    curl_close($ch);
    $geoData = json_decode($response);
    if(isset($geoData->results[0])) {
        foreach($geoData->results[0]->address_components as $addressComponent) {
            if(in_array('country', $addressComponent->types)) {
                return array($addressComponent->short_name, $addressComponent->long_name); 
            }
        }
    }
    return null; 
}

这种方式有效率为60%,但有时会返回null。基本上我不知道是什么导致了这一点,我需要有人帮我解决问题。

提前致谢

1 个答案:

答案 0 :(得分:0)

  1. 它不清楚$geoAddress是什么,但是当它不是urlencoded但你必须编码它时:

    $url = 'http://maps.google.com/maps/api/geocode/json?address=' .
              urlencode($geoAddress);
    
  2. 使用密钥确保您不与同一服务器上托管的其他域共享请求配额

  3. 请确保您每秒运行此功能的次数不超过10次

  4. 地理编码可能会失败,我们需要查看示例 - 响应失败尝试隔离问题