2014-11-21 42 views
0

我試圖將數組中的標記添加到單張地圖中。我試圖從數組中獲取彈出信息,圖層和座標。我必須錯過一些明顯的東西,因爲我無法拉動圖層信息。將數組中的標記添加到單張中

markersArray [i] [1]返回值「layer1」,但它在.addTo方法中不起作用。

編輯:我已經改變了代碼來解決用記號筆出現與聚類外一個問題:

我的代碼如下:

var markersList = []; 
var markersList = [ 
[41.15,-8.61,'popup1','layer1'], 
[41.15,-8.61,'popup2','layer1'], 
[41.15,-8.31,'popup3','layer2'], 
[41.15,-8.31,'popup4','layer2'] 
]; 

var markers = new L.MarkerClusterGroup(); 

for (var i = 0; i < markersList.length; i++) { 
markers.addLayer(new L.marker([markersList[i][0], markersList[i][1]]).bindPopup(markersList[i][2])); 
markers.addTo(layer1); // working 
markers.addTo(markersList[i][3]); // not working 
map.addLayer(markers); 
}; 

感謝您的幫助。

回答

1

這是因爲markersArray [i] [1]具有字符串的類型。如果你想用它來引用layer1對象,你可以使用[markersArray [i] [1]];

編輯因爲編輯:

你仍然犯同樣的錯誤。 addTo方法需要圖層的一個實例作爲參數,而不是包含layerinstance的變量的名稱的字符串。 markersList [i] [3]包含一個字符串,其中您的layerinstance的變量名稱不是該圖層的實例。如果你想通過字符串獲取該圖層的實例,你應該使用:this [markersList [i] [3]]。這將導致以下代碼:

markers.addTo(this[markersList[i][3]]); 

這裏「這個」代表了當前的範圍,markersList [I] [3]與您的變量名的字符串,因此它會導致「這個[‘layer1的’]」這是您的layerinstance的參考。我假設你已經聲明變量層1在範圍和它所包含的layerinstance:

var layer1 = new L.LayerGroup(); 

但是,在創建layergroups的情況下,我不能扣除從當前的代碼,因爲你已經刪除。

+0

感謝您的幫助。仍然沒有運氣,或者我可能不明白你的意思。我改變了原始文章中的代碼,因爲我總是在集羣外面出現標記。 Tks – BMM 2014-11-24 13:38:31

+1

我已經編輯了我的答案,希望能夠解決這個問題 – iH8 2014-11-24 14:00:25

+0

謝謝。我現在更好地理解它。它現在不輸出任何錯誤,但不知何故標記被放置在兩個層中;即隱藏Leaflet圖層控件中的layer1或layer2隱藏/顯示所有標記......我將嘗試弄清楚它 – BMM 2014-11-24 15:23:13

1

addTo用於將標記添加到地圖。通過它標記陣列不會像你找到的那樣工作。

我打算猜測你有多個圖層,每個圖層都有一些你添加到地圖上的特徵。您可能需要使用圖層字典,並將每個圖層名稱映射到相應的傳單圖層對象。

var layerLookup {}; 
layerLookup["layer1"] = new L.LayerGroup().addTo(map); 
layerLookup["layer2"] = new L.LayerGroup().addTo(map); 

... // other code 

for (var i = 0; i < markersArray.length; i++) { 
    marker = new L.marker([markersArray[i][2],markersArray[i][3]]) 
    .bindPopup(markersArray[i][0]).addTo(layerLookup[markersArray[i][1]]); 
}; 
+0

您能否詳細說明一下?我更改了一些代碼以使集羣能夠與圖層一起工作(有一個問題:1個標記總是在集羣外面)。我在原帖中編輯了代碼。謝謝。 – BMM 2014-11-24 13:34:52

+1

看起來你已經選擇了其他答案並且開了一個新問題。希望你全力以赴。 – 2014-11-24 19:35:14

相關問題