我有一个编码的XML文件,其中包含多个游乐设施。我想使用反向地理编码来检索实际位置。但是当我上传XML文件时,刷新页面时会得到不同的位置。它似乎是缓存,因为有很多位置,与上面的位置相同。
//Get Location Start
//Get location
$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=".$locBegLat.",".$locBegLon."&sensor=false";
$data = @file_get_contents($url);
$jsondata = json_decode($data,true);
if(is_array($jsondata) && $jsondata['status'] == "OK"){
//street
foreach ($jsondata["results"] as $result) {
foreach ($result["address_components"] as $address) {
if (in_array("route", $address["types"])) {
$streetBeg = $address["long_name"];
}
}
}
//street_number
foreach ($jsondata["results"] as $result) {
foreach ($result["address_components"] as $address) {
if (in_array("street_number", $address["types"])) {
$street_numberBeg = $address["long_name"];
}
}
}
// city
foreach ($jsondata["results"] as $result) {
foreach ($result["address_components"] as $address) {
if (in_array("locality", $address["types"])) {
$cityBeg = $address["long_name"];
}
}
}
// postal_code
foreach ($jsondata["results"] as $result) {
foreach ($result["address_components"] as $address) {
if (in_array("postal_code", $address["types"])) {
$postal_codeBeg = $address["long_name"];
}
}
}
// country
foreach ($jsondata["results"] as $result) {
foreach ($result["address_components"] as $address) {
if (in_array("country", $address["types"])) {
$countryBeg = $address["long_name"];
}
}
}
}
$LocBeg = $streetBeg . " " . $street_numberBeg;
echo $streetBeg;
echo $street_numberBeg;
echo $cityBeg;
echo $countryBeg;
echo $postal_codeBeg;
网站是:www.interwebmedia.nl/dataxi
xml文件:https://drive.google.com/file/d/0B31rNYjTJf81dkQ4R2xOcUc2WEk/edit?usp=sharing
我希望有人知道,为什么这些位置使用相同的坐标是不同的,只需在上传文件后刷新页面。
答案 0 :(得分:0)
有两个不同的问题,最基本的2个:
地理编码的限制为10个请求/秒。在每次请求后打印$jsondata['status']
,您会看到很多请求因限制而失败。解决方案(不是100%保证):在每次请求之前致电usleep(100000);
以确保第二次请求不超过10个
您在循环中创建的变量,例如必须在每个循环开始时重置$streetEnd
,$cityEnd
。否则,当此组件在当前响应中不可用时,您的脚本将使用先前请求中设置的值。