2010-01-13 74 views
2

我已經使用Google Maps API製作了一個地圖,該地圖將多個用戶的方向多段線顯示到一個共同的目的地。因此,每個用戶同時在地圖上顯示自己的折線。Google Maps API的方向限制

問題是似乎有多少折線返回的限制。當我有超過10個用戶時,我停止接收折線數據。 (要添加到地圖的最後一個用戶不會得到多段線)。我可能會指出load函數仍然可以正常工作(錯誤事件偵聽器沒有被調用),但是我不會獲取折線數據,或者拒絕繪製到地圖。

每次繪製的多義線的數量都會有所不同,這讓我覺得谷歌並不喜歡一次從同一用戶接收這麼多的請求,但我無法確定。

有沒有人有任何想法如何解決這個問題?我試圖提供緯度和經度而不是地址字符串來嘗試減少工作量,但它似乎對繪製的多段線數量沒有任何影響。

回答

2

根據Google Maps API blog,您應該可以在不受Google限制的情況下每天創建10,000個GDirections個請求。不過,我在Google Maps API Group上發現了一個post,這表明存在單獨的限制機制,根據您提出請求的費率將返回620個HTTP錯誤。

從你的問題看來,你的錯誤偵聽器沒有被調用,所以這不太合適。但是我還沒有找到來自Google的這種行爲的官方描述,所以我不確定。

您是否可以緩衝您的GDirections請求並降低您的使用率?這可能是一個很好的測試,看看您是否受到請求率限制機制的影響。

+1

終於想出瞭如何緩衝我的請求,它似乎工作:)如果我給每個通話之間250毫秒,我似乎得到所有的結果。我繪製了32條多段線中的32條。我沒有測試過任何更高的數據,但對大多數情況來說,這應該足夠好。 – Dominic 2010-01-14 04:32:08

+1

太棒了。很高興你把它整理出來。 – RedBlueThing 2010-01-14 12:30:38

+0

感謝您提供的信息,我想問你一個問題(它可能是幼稚的) - 是他們在地圖上繪製路線(方向)的任何其他方式(永遠是免費的)。 – 2014-11-17 12:26:28

1

我只是做了一些相當簡單的事情,如下所示。我創建了一個我想預先添加的所有方向的數組。我通過我的方向循環,添加一個標記(我添加了一個標記,與方向分開,這樣即使方向未能繪製也總是有標記),然後我調用setTimeout函數安排方向調用,以便Google不會「不要馬上把它們全部弄清楚。然後我增加約250毫秒的值(可能需要玩這個值)。

var milliseconds = 0; 
for(i in directions){ 
    addMarker(directions[i]); //I place the marker separate to the direction so that there is always a marker even if the direction fails to draw. 

    setTimeout(function(){ 
        addDirection(directions[directionCounter]); //This is my function that makes the direction request to Google 
        directionCounter++; 
       } 
       , milliseconds); 

    milliseconds += 250; 
} 

希望這是幫助。