Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JS GeoMan转换为JSON数据_Javascript_Json_Leaflet_Leaflet Geoman - Fatal编程技术网

Javascript 将JS GeoMan转换为JSON数据

Javascript 将JS GeoMan转换为JSON数据,javascript,json,leaflet,leaflet-geoman,Javascript,Json,Leaflet,Leaflet Geoman,我已经将GeoMan添加到我的传单地图中,只是想知道是否有一种方法可以将所有绘制的特性导出到JSON中。我使用它只是为了开发,以便JSON可以进入console.log 我只是在努力解决这个问题。这是我到目前为止唯一的代码 map.pm.toggleGlobalDragMode(); map.pm.addControls({ position: 'topright', editMode: true, }); layer.pm.enable({ pinning: true, sna

我已经将GeoMan添加到我的传单地图中,只是想知道是否有一种方法可以将所有绘制的特性导出到JSON中。我使用它只是为了开发,以便JSON可以进入console.log

我只是在努力解决这个问题。这是我到目前为止唯一的代码

map.pm.toggleGlobalDragMode();
map.pm.addControls({
  position: 'topright',
  editMode: true,



});

layer.pm.enable({ pinning: true, snappable: true })
您可以使用以下代码:

function generateGeoJson(){
    var fg = L.featureGroup();    
    var layers = findLayers(map);
        layers.forEach(function(layer){
        fg.addLayer(layer);
         });
    console.log(fg.toGeoJSON());
}

function findLayers(map) {
    var layers = [];
    map.eachLayer(layer => {
      if (
        layer instanceof L.Polyline || //Don't worry about Polygon and Rectangle they are included in Polyline
        layer instanceof L.Marker ||
        layer instanceof L.Circle ||
        layer instanceof L.CircleMarker
      ) {
        layers.push(layer);
      }
    });

    // filter out layers that don't have the leaflet-geoman instance
    layers = layers.filter(layer => !!layer.pm);

    // filter out everything that's leaflet-geoman specific temporary stuff
    layers = layers.filter(layer => !layer._pmTempLayer);

    return layers;
  }
小提琴:

有关更多信息,请查看

其他信息:

  • 在下一个Realease中,将有一个获取所有层的函数
  • 锁定仅适用于专业版
  • 例如:

非常感谢您的回答。我也查看了更多信息,但出于某种原因,控制台正在输出我所有的现有层,而不仅仅是新层。我不确定这是否是因为添加图层的方式。(出于某种原因,mini markdown讨厌我的代码)var villageMarkers=new L.MarkerClusterGroup({disableClusteringAtZoom:2,maxClusterRadius:600});villageMarkers.addLayer(villageLayer);没有关系!我只是删除了“L.Marker | |的层实例”,因为我现有的所有层都只是标记,现在我不想添加新的标记。很高兴能找到这个问题,但非常感谢。