在我的业务中,我必须使用谷歌地图作为我的应用程序(计算距离)
我们目前使用配置脚本进行代理。
在我的应用程序中,我使用该方法来查询file_get_contents
Google Map。
$url = 'http://maps.google.com/maps/api/directions/xml?language=fr&origin='.$adresse1.'&destination='.$adresse2.'&sensor=false';;
$xml=file_get_contents($url);
$root = simplexml_load_string($xml);
$distance=$root->route->leg->distance->value;
$duree=$root->route->leg->duration->value;
$etapes=$root->route->leg->step;
return array(
'distanceEnMetres'=>$distance,
'dureeEnSecondes'=>$duree,
'etapes'=>$etapes,
'adresseDepart'=>$root->route->leg->start_address,
'adresseArrivee'=>$root->route->leg->end_address
);
}
但是使用代理我有一个未知的主机错误。 (我测试了我的家,代码工作正常)。我想知道是否有办法考虑我在浏览网页时识别自己的代理?
答案 0 :(得分:0)
google对每个时间段的查询数量都有限制,因为它是api
首先,你必须缓存结果,并在查询之间添加暂停
https://developers.google.com/maps/documentation/business/articles/usage_limits
答案 1 :(得分:0)
您可以使用cURL执行此操作。它比对file_get_contents()
的简单调用更冗长,但更具可配置性:
$url = 'http://maps.google.com/maps/api/directions/xml?language=fr&origin='.$adresse1.'&destination='.$adresse2.'&sensor=false';
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_PROXY, ''); // your proxy address (and optional :port)
curl_setopt($handle, CURLOPT_PROXYUSERPWD, ''); // credentials in username:password format (if required)
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
$xml = curl_exec($handle);
curl_close($handle);
//continue logic using $xml as before
答案 2 :(得分:0)
当然,您还可以提及“context”来使file_get_contents识别代理。请查看我自己的问题和我自己对该问题的回答here