2013-02-17 120 views
0

我被我的循環卡住了。一切功能,除了markerLayer.markers()[i].showTooltip(); 不知何故,它顯示了錯誤的標記。我是否通過了錯誤的論點?我在這裏錯過了邏輯嗎?javascript循環錯誤

for (var i = 0; i < features.length; i++) { 
    var a = side.appendChild(document.createElement('a')); 
    a.onclick = (function (feature, i) { 
     return function() { 
      markerLayer.interaction.hideTooltips() 
      map.ease.location({ 
       lat: feature.geometry.coordinates[1], 
       lon: feature.geometry.coordinates[0] 
      }).zoom(zoomPlaces).optimal(null, null, function (feature) { 
       markerLayer.markers()[i].showTooltip(); 
      }) 
     } 
    }) 
    (features[i], i); 
} 
+0

'markerLayer.markers()'是否按照您期望的順序返回標記? – 2013-02-17 19:33:41

+0

不,我會解釋: 正常的順序是0 1 2 3 4 5 6 現在我得到2 6 3 4 5 0 1 如果我把它做成'markerLayer.markers()[i + 1] .showTooltip( );',它返回6 3 4 5 0 1(最後一個不起作用) 如果我使它+2,它給出3 4 5 0 1// 如果我使它-1, 2 6 3 4 5 0(3,4,5是正確的) 如果我把它做成-2,它給出// 2 6 3 4 5(2是正確的) 有什麼想法? – user1697335 2013-02-17 20:33:12

+0

整個代碼在http://www.boerenmetwater.nl – user1697335 2013-02-17 20:37:44

回答

0

MapBox和傳單的JavaScript API的最新版本的使用map.markerLayer.getLayers()返回包含唯一_leaflet_id層對象的數組。請使用該ID號碼來幫助指定您想要的標記togglePopup