В настоящее время я использую эту функцию, чтобы инвертировать геокод латлинга из изображений 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% времени, но иногда возвращает ноль. По сути, я понятия не имею, что вызывает это, и мне нужен кто-то, чтобы помочь мне справиться с проблемой.
заранее спасибо
не понятно что $geoAddress
есть, но когда он еще не закодирован, вы должны его закодировать:
$url = 'http://maps.google.com/maps/api/geocode/json?address=' .
urlencode($geoAddress);
используйте ключ, чтобы убедиться, что вы не передаете квоту запроса другим доменам, размещенным на том же сервере
убедитесь, что вы не запускаете эту функцию более 10 раз в секунду
геокодирование может дать сбой, нам нужно увидеть пример-ответ для неудачной попытки изолировать проблему
Других решений пока нет …