2012-06-20 41 views
2

我正在使用google.maps.DirectionsService獲取兩點之間的路線。該代碼在過去的8個月內運行。但是,從過去的幾天,DirectionService路由調用正在返回OVER_QUERY_LIMIT響應狀態。只有6組點,其中只有2或3個請求得到結果,其餘都失敗。代碼與過去8個月保持一致。以下是供參考的代碼片段:Google地圖:DirectionService返回OVER_QUERY_LIMIT回覆

  var directionsService = new google.maps.DirectionsService(); 
      var request = {      
        origin:originLatlng, //This is of type : google.maps.LatLng 
        destination:destLatlng, 
        travelMode: google.maps.DirectionsTravelMode.DRIVING, 
        provideRouteAlternatives: true 
      }; 

      directionsService.route(request, function(result, status) { 
       if (status == google.maps.DirectionsStatus.OK) { 

        polyline = new google.maps.Polyline({ 
         path: result.routes[0].overview_path, 
         strokeColor: color1, 
         strokeOpacity: 0.8, 
         strokeWeight: 5, 
         geodesic: true 
        }); 
       } 
      } 

向DirectionService發出幾乎6個這樣的同時請求。我無法在請求之間進行睡眠,因爲它會增加我的應用程序GUI加載時間。

我已經嘗試了來自不同網絡的相同代碼,仍然存在問題。

我絕對沒有接近達到每日2500的要求限制。

這裏有什麼問題?請爲此提出解決方案。

任何幫助將不勝感激。

在此先感謝

Satyapal

+0

可能要從搜索Stack Overflow開始,看到人們對幾乎相同的問題的回答:http://stackoverflow.com/search?q=over_query_limit – andresf

+0

我仍然無法解決此問題。有沒有人有這個答案?請幫忙。 – user1469358

+0

10個路徑得到處理後,我得到over_query_limit。有人可以解決它嗎? –

回答

0

嘗試把你的要求的setTimeout()函數中:在query_limit也可以從附近的這一個被稱爲過去的請求。

setTimeout(function(){ 
    directionsService.route(request,function(result, status) { 
     if (status == google.maps.DirectionsStatus.OK) 
      {[...your code...]} 
     else alert(status); 
    }); 
},1000); 
0

我跟谷歌的服務器端API的方向,創造了將sleep(0.2)如果OVER_QUERY_LIMIT返回的狀態的PHP頁面。然後我用$.getJSON來檢索這個PHP頁面,它使用差不多的完全相同的數據和參數。 (按照Google's directions處理參數中的差異。)

PHP:

$params = http_build_query($_GET); 
$url = "http://maps.googleapis.com/maps/api/directions/json?sensor=false&" . $params; 
$json = file_get_contents($url); 
$status = json_decode($json)->status; 

// check for over_query_limit status 
while ($status=="OVER_QUERY_LIMIT") { 
    sleep(0.2); // seconds 
    $json = file_get_contents($url); 
    $status = json_decode($json)->status; 
} 

header('application/json'); 
echo $json; 

的jQuery:

request = { // construct route request object 
    origin: start_address, 
    destination: end_address, 
    waypoints: addresses.join('|'), 
    avoid: 'tolls' 
}; 

$.getJSON('directions-lookup.php', request, function(response) { 
    //console.log(response); 
    var status = response.status; 
    if (status==google.maps.DirectionsStatus.OK) { 
     // do things here 
    }; 
}); 

東西我注意到的是,當你使用JavaScript API方向,您會像Google LatLng對象那樣獲取像lat/lng位置這樣的內容,這在這裏不會發生。我只是使用new google.maps.LatLng(..., ...)將它們重新構建到對象中。