2014-01-13 63 views
1

很難把我的問題轉化爲文字,但我會嘗試。我正在使用傳單。我有一個包含大量有關路燈的位置和信息的圖層,但有些圖層位置不合適。那麼是否可以拖動通過geoJSON文件信息定位的標記?是否可以拖動從geojson文件獲取座標的標記?

獎勵問題(目前不太重要):如果拖動是可能的,有可能將這些更改保存到geojson文件中嗎?

關於該圖層的代碼。

tv = new L.geoJson(tv, { 
    pointToLayer: function (feature, layer) { 
      return L.marker(layer, {icon: asteriskorangeicon }); 
     }, 
     onEachFeature: onEachFeature2, 

    }); 
    function onEachFeature2(feature, layer) { 
    if (feature.properties) { 
     layer.bindPopup("<br><b><big><u>ID: " + feature.properties.id + "</br></b></big></u><br> <b>01_NR: </b>" + feature.properties.nr01 
     + "<br><b>Kilp:</b> " + feature.properties.kilp + "<br><b>Phase: </b>" + feature.properties.phase_03 + "<b><br>kand_t1_04: </b>" 
     + feature.properties.kand_t1_04 + "<b><br>kand_t2_05: </b>" + feature.properties.kand_t2_05 + "<br><b>kand_om_06: </b>" + feature.properties.kand_om_06 
     + "<br><b>kand_kp_07:</b> " + feature.properties.kand_kp_07 + " <br><br>"  
     ); 
    } 
} 

感謝, 克里斯蒂安

回答

3

每一由L.geoJson拖動創建的標誌,所有你需要做的就是添加onEachFeature函數中執行以下操作:

function onEachFeature2(feature, layer) { 
    layer.options.draggable = true; 
    ... 
+0

還應該提到的是你的「TV」以GeoJSON圖層與通過地圖進行的任何更改保持同步。您可以將標記拖到您的內容中,然後調用tv.toGeoJSON()方法從圖層中獲取更新的GeoJSON。 – BlueWater86

2

嘗試使用geojson.io編輯您的GeoJSON的。 UI允許您將標記拖動到地圖上,然後geoJSON將更新以反映這些更改。有關如何添加和編輯geoJSON的更多詳細信息,請參閱下面的gif。

geojson

0

如果要從小葉貼圖導出要素,可以遍歷所有圖層並請求GeoJSON表示。

E.g.

map.eachLayer(function(layer){ 
    if(layer.toGeoJSON){ 
    console.log(layer.toGeoJSON()) 
    } 
});