2014-04-16 35 views
0

我有一个编码的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

它来查看解码XML –

+0

解码xml文件将是有趣:https://drive.google.com/file/d/0B31rNYjTJf81emVKbTNIRHlQcWs/edit?usp=sharing – Novy

+0

你怎么用上面的脚本?它适用于对单个latLng进行地理编码,并且我在http://www.interwebmedia.nl/dataxi/upload_file.php上看到的输出可能不仅仅是该脚本的结果。 –

回答

0

有不同的问题,所述2最基本:

  1. 有10个请求/秒为地理编码的限制。打印每个请求后$jsondata['status'],你会看到很多的请求失败,因为的限制。解决方案(并非100%保证):在每次请求前拨打usleep(100000);以确保一秒内的请求数不超过10个

  2. 您在循环中创建的变量$streetEnd$cityEnd必须在开始每个回路来重置了。否则,当此组件在当前响应中不可用时,脚本将使用先前请求中设置的值。

+0

感谢您提供有用的信息。 – Novy