Google обратный геокод возвращается ноль

В настоящее время я использую эту функцию, чтобы инвертировать геокод латлинга из изображений Instagram:

 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% времени, но иногда возвращает ноль. По сути, я понятия не имею, что вызывает это, и мне нужен кто-то, чтобы помочь мне справиться с проблемой.

заранее спасибо

0

Решение

  1. не понятно что $geoAddress есть, но когда он еще не закодирован, вы должны его закодировать:

    $url = 'http://maps.google.com/maps/api/geocode/json?address=' .
    urlencode($geoAddress);
    
  2. используйте ключ, чтобы убедиться, что вы не передаете квоту запроса другим доменам, размещенным на том же сервере

  3. убедитесь, что вы не запускаете эту функцию более 10 раз в секунду

  4. геокодирование может дать сбой, нам нужно увидеть пример-ответ для неудачной попытки изолировать проблему

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]