是否可以拖动从geojson文件获取坐标的标记?

时间:2014-01-13 09:55:20

标签: javascript leaflet 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>"       
        );
    }
}

谢谢, 克里斯蒂安

4 个答案:

答案 0 :(得分:3)

要使L.geoJson创建的每个标记都可拖动,您需要做的就是在onEachFeature函数中添加以下内容:

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

答案 1 :(得分:2)

尝试使用geojson.io编辑geoJSON。用户界面允许您将标记拖动到地图,然后geoJSON将更新以反映这些更改。有关如何添加和编辑geoJSON的更多详细信息,请参阅下面的gif。

geojson

答案 2 :(得分:0)

最好查看Leaflet API reference documentation - the option is dragging on the markers object

return L.marker(layer, {icon: asteriskorangeicon, dragging: true });

当然,这不允许您将结果保存到图层。为此,请使用geojson.io

答案 3 :(得分:0)

如果要从传单地图导出要素,可以迭代所有图层并请求GeoJSON表示。

E.g。

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