2016-03-06 44 views
1

我無法找到如何更改放置在layerGroup中的圖層(L.Marker)的座標。
我創建全局變量var markerGroup = new L.layerGroup();L.layerGroup中L.Marker的座標變換

然後我在那裏我創建層就像一個功能:

var newMarker = L.marker([decimal_lat, decimal_lon]); 
markerGroup.addLayer(newMarker); 

而且我在那裏我改變標誌的座標模態對話框窗口(取決於ID我改變從我的層什麼標記):

(markerGroup.getLayer(id)).setLatLngs(L.latLng(parseFloat(lat_p), parseFloat(lon_p))); 

但是這種解決方案使得錯誤,如:

無法讀取屬性「setLatLngs」的未定義

有什麼辦法如何改變在L.layerGroup特定位置L.Marker的座標?

回答

2

標記層沒有setlatLngs方法,它們的確有setLatLng。很可能你犯了一個錯字錯誤。

這裏是fiddle,我已經正確地轉載了您的問題。起初我已經添加了一個具有任意座標的標記,然後我將它移到了地圖的中心,恰好在設置地圖視圖的位置。

var markerGroup = new L.layerGroup(); 
var newMarker = L.marker([1000, 1000]); 
markerGroup.addLayer(newMarker); 
markerGroup.addTo(map); 
markerGroup.getLayer(24).setLatLng(new L.LatLng(0,0)); 
+0

真的,你是對的,但我可以問你,爲什麼你在getLayer()方法中使用24號?我認爲它應該是0,因爲MarkerGroup的長度.. –

+0

'getLayer()'接收圖層的id作爲參數,而不是'LayerGroup'中的索引。你可以在這裏看到它:http://leafletjs.com/reference.html#layergroup-getlayer。遍歷標記組以查看每個圖層的標識:'markerGroup.eachLayer(function(layer){console.log(layer._leaflet_id); \t});' –

+0

這意味着圖層的id是自動生成的,對? –