1

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);

どんな助けにもとても感謝しています。

ありがとうブライアン。

4

0 に答える 0