如果我正确理解谷歌错误OVER_QUERY_LIMIT,那么它是因为有太多的ip请求。但如果我转到浏览器并加载以下链接:http://maps.googleapis.com/maps/api/geocode/xml?address=Paris&传感器=真实
我可以看到xml!
那为什么呢?
我的代码有问题吗?
这是:
$the_map = htmlspecialchars($_POST['map'], ENT_QUOTES);
error_reporting(0);
$map_query = file_get_contents('http://maps.google.com/maps/api/geocode/xml?address='.rawurlencode($the_map).'&sensor=false');
error_reporting(1);
if ($map_query){
$geo_code = simplexml_load_string(utf8_encode($map_query));
if ($geo_code){
$map_lat = $geo_code->xpath("/GeocodeResponse/result/geometry/location/lat");
$map_lng = $geo_code->xpath("/GeocodeResponse/result/geometry/location/lng");
$map_lat = $map_lat[0][0];
$map_lng = $map_lng[0][0];
}
}
使用curl而不是file_get_contents:
$address = "India+Panchkula";
$url = "http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=India";
$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);
$response_a = json_decode($response);
echo $lat = $response_a->results[0]->geometry->location->lat;
echo "<br />";
echo $long = $response_a->results[0]->geometry->location->lng;
或查看以下URL
为google api 使用file_get_contents时发出警告