Google Geocode 呼び出しを数か月間問題なく使用しています。数日前までは、現在、応答に 60 秒以上かかることがあります。ステータスは「OK」で、必要なフィールドはリターン エリアにあります。
ほとんどの場合は問題ありませんが、時々問題が発生します。立て続けに 3 つか 4 つの呼び出しを行って、問題を再現しました。最後の呼び出しには 60 秒以上かかります。
私は確認しました:
curl_exec($ch)
ステートメントで遅延が発生すること。(コードを実行してこれを行いましたが、このステートメントを除いて、問題はありませんでした。curl_exec($ch)
その後、数回呼び出した後、60秒以上かかります)。私は 1 日あたり 2,500 リクエストの制限にはほど遠いです。
ステータス フィールドは「OK」であり、「OVER_QUERY_LIMIT」ではありません。
PHP (バージョン: 5.2.17) を使用しています。
コードは以下のとおりです。
function geocode($postcode){
$locality = '';
$administrative_area_level_2 = '';
$administrative_area_level_1 = '';
$postal_town = '';
$formatted_address = '';
$longitude = 0 ;
$latitude = 0 ;
$postcode1 = str_replace(' ','_',$postcode) . ',UK';
$string = str_replace (" ", "+", urlencode($string));
$details_url = "http://maps.googleapis.com/maps/api/geocode/json?address=".$postcode1."&sensor=false";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $details_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$temp = curl_exec($ch) ;
$response = json_decode($temp, true);
$geo_error = $response['status'];
if ( $geo_error == 'OK' ) { // oooooooooooooooooooooooooooooo
$names = array();
$names[0] = $response['results'][0]['address_components'][0][long_name] ;
$names[1] = $response['results'][0]['address_components'][1][long_name] ;
$names[2] = $response['results'][0]['address_components'][2][long_name] ;
$names[3] = $response['results'][0]['address_components'][3][long_name] ;
$names[4] = $response['results'][0]['address_components'][4][long_name] ;
$types = array();
$types[0] = $response['results'][0]['address_components'][0][types][0] ;
$types[1] = $response['results'][0]['address_components'][1][types][0] ;
$types[2] = $response['results'][0]['address_components'][2][types][0] ;
$types[3] = $response['results'][0]['address_components'][3][types][0] ;
$types[4] = $response['results'][0]['address_components'][4][types][0] ;
for ($i = 0; $i <= 4; $i++) {
switch ($types[$i]) {
case 'locality':
$locality = $names[$i];
break;
case 'administrative_area_level_2':
$administrative_area_level_2 = $names[$i];
break;
case 'administrative_area_level_1':
$administrative_area_level_1 = $names[$i];
break;
case 'postal_town':
$postal_town = $names[$i];
break;
default:
break;
} // end of switch
} // end of for
$formatted_address = $response['results'][0]['formatted_address'] ;
$geometry = $response['results'][0]['geometry'];
$longitude = $geometry['location']['lng'];
$latitude = $geometry['location']['lat'];
$address_components = $response['results'][0]['address_components'];
$array = array(
'latitude' => $geometry['location']['lat'],
'longitude' => $geometry['location']['lng'],
'location_type' => $geometry['location_type'],
);
} else { // ooooooooooooooooooooooooooooooooooooooooooooo
// geo did not work so log error and report
} // end if oooooooooooooooooooooooooooooooooooooooooooo
return array($longitude,$latitude,$locality,$administrative_area_level_2,
$administrative_area_level_1,$postal_town,$formatted_address,$geo_error);
どんな助けにもとても感謝しています。
ありがとうブライアン。