Javascript 传单-在没有插件的情况下切换GeoJSON层

Javascript 传单-在没有插件的情况下切换GeoJSON层,javascript,gis,leaflet,Javascript,Gis,Leaflet,我知道如何添加带有标记的图层,可以打开/关闭标记,以及如何将GeoJSON图层添加到地图中 但我不能把这些功能混用 我需要从GeoJSON创建一个切换层(多段线层) 是否可以在没有任何外部插件或脚本的情况下获得我需要的?GeoJSON层和标记可以毫无问题地一起使用 为了能够切换图层,您需要从可以单击的对象(例如按钮)捕获某种类型的单击事件。 根据我的研究,我发现如果你需要一个自定义按钮,那么你自己实现起来就不那么快了,所以你可能需要使用一个可用的插件 如果您仍然不想构建按钮或使用插件,例如,可以

我知道如何添加带有标记的图层,可以打开/关闭标记,以及如何将
GeoJSON
图层添加到地图中

但我不能把这些功能混用

我需要从GeoJSON创建一个切换层(多段线层)


是否可以在没有任何外部插件或脚本的情况下获得我需要的

GeoJSON层和标记可以毫无问题地一起使用

为了能够切换图层,您需要从可以单击的对象(例如按钮)捕获某种类型的单击事件。 根据我的研究,我发现如果你需要一个自定义按钮,那么你自己实现起来就不那么快了,所以你可能需要使用一个可用的插件

如果您仍然不想构建按钮或使用插件,例如,可以在地图本身上设置一个单击事件,从而打开和关闭GeoJSON层

我从传单网站上获取了GeoJSON示例,并对其进行了更改,使其可以打开和关闭GeoJSON层:

var geoLayer = L.geoJson([
  // ...
]);

map.on('click', function() {
  if(map.hasLayer(geoLayer)) {
    map.removeLayer(geoLayer);
  } else {
    map.addLayer(geoLayer);
  }
});
希望对你有帮助

编辑: 我将示例更改为使用layer.js的层控件 哪一个更好

var baseLayers = {
  "Markers": markerLayer,
  "GeoJSON": geoLayer
};
L.control.layers(baseLayers).addTo(map);
不知道这件事;)

如果要使用复选框来代替单选按钮,请使用此选项

L.control.layers(null, baseLayers).addTo(map);

如果您有什么想法,如何通过插件获得我需要的东西,请告诉我。:)我需要快速解决它。它很有效!:)还有两个小问题。如何将此层控制面板移到左侧?当我将光标从图标上移开时,如何将这个图层控制面板设置为始终可见,而不是隐藏?您可以这样定位它:L.control.layers(baseLayers).addTo(map.setPosition('bottomright');你可以做各种各样的事情,只要阅读文档就可以了。。妈的,如果你问我问题,我就不能停止思考。。有一个“折叠”选项,您可以像这样轻松关闭:L.control.layers(baseLayers,null,{collazed:false}).setPosition('topleft').addTo(map);我相应地更新了上面的代码笔示例