2014-04-16 63 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