抓取纬度和经度时无法获取网址的文件内容

时间:2014-02-06 05:28:09

标签: php google-maps curl

我想将给定的邮政编码转换为纬度和经度以集成到我的购物车项目中。 但是当我尝试使用google api获取纬度和经度时,他们会显示一些错误,例如

  

“我们很抱歉......但您的计算机或网络可能正在发送   自动查询。为了保护我们的用户,我们无法处理您的请求   现在。“

我的代码出了什么问题?我的代码如下所示。

function getLatLong($code){
 $mapsApiKey = 'AIzaSyC1Ky_5LFNl2zq_Ot2Qgf1VJJTgybluYKo';
 $query = "http://maps.google.co.uk/maps/geo?q=".urlencode($code)."&output=json&key=".$mapsApiKey;
 //---------

 // create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $query);
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
$data = curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);


 //-----------
 //$data = file_get_contents($query);
 // if data returned
 if($data){
  // convert into readable format
  $data = json_decode($data);
  $long = $data->Placemark[0]->Point->coordinates[0];
  $lat = $data->Placemark[0]->Point->coordinates[1];
  return array('Latitude'=>$lat,'Longitude'=>$long);
 }else{
  return false;
 }
}


print_r(getLatLong('SW1W 9TQ'));

1 个答案:

答案 0 :(得分:0)

使用useragent

curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0');

同时检查您是否错过了发送任何HTTP请求标头。还要检查您是否在请求中使用了必需的参数(GET或POST)。

顺便说一句,如果您使用的请求太多,那么您就与此错误无关。只需停止发送请求,或限制您的请求,以免它扰乱服务器。