2012-03-18 125 views
2

我有一個關於谷歌地圖標記和JavaScript的問題。谷歌地圖標記緩慢循環

我有一個頁面,只有一個div(map_canvas提供)當您點擊它創建一個標記,並在標記你輸入的名稱和標誌開始彈跳文本框...

到跟蹤標記我有一個所有標記添加數組。問題是,當它到達20+標記的UI趨於而其循環反應遲鈍......

這裏要說的是,我有循環,它是需要標記ID作爲參數的函數裏面

for (var i=0; i < markers.length; i++) { 
     if(markers[i].id == id) 
     { 
      if(markers[i].getAnimation() != null) 
      { 
       markers[i].setAnimation(null); 
      } 
      else 
      { 
       markers[i].setAnimation(google.maps.Animation.BOUNCE); 
      } 
     } 
     else 
      markers[i].setAnimation(null); 
    } 

請讓我知道這是一個重新發布或如果我應該提供更多的信息.​​.....這是我的第一個問題在這裏!

+0

您可能想澄清一下,在循環時,UI的含義往往變得無響應。彈跳停止或地圖不顯示等 – 2012-03-18 01:58:12

+0

地圖在循環時不響應...如果您嘗試點擊並在地圖上移動,在循環找到標記時它不會響應 – gastonfartek 2012-03-18 02:01:58

+0

您是否重置將動畫設置爲標記後映射的地圖? – 2012-03-18 02:03:54

回答

1

我建議使用id作爲您的markers數組中的索引,以便您可以直接訪問每個標記,而不是循環找到它。一旦你有一個「當前」的標記,記下它是爲了讓你知道哪一個停止彈跳,當你開始下一個彈跳。

var lastmarker; 
...  
if (lastmarker) {markers[lastmarker].setAnimation(null)} 
markers[id].setAnimation(google.maps.Animation.BOUNCE); 
lastmarker=id; 

當然,這個建議的可行性取決於你的其他代碼,其中我們什麼都不知道。

0

我會建議在你的代碼中添加步驟/斷點,不確定你在哪個編碼環境.....如果你只是使用直線html,我會建議使用螢火蟲來使用斷點來執行你的代碼,因爲這樣會允許您在代碼中看到問題。我猜測它是代碼相關的。

如果你已經這樣做了,我對你的問題感到困惑,爲什麼它會停止工作在20個或更多的標記....如果它不是代碼相關我會冒險猜測它有東西與谷歌的api,因爲我遇到了一些真正奇怪的事件,一旦你超過了他們的最大特定事物,雖然我沒有經歷過最大的標記位置,我做了類似你在做什麼,但在asp環境中與更多的標記。