javascript - Leaflet - 在没有插件的情况下切换 GeoJSON 层

标签 javascript gis leaflet

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

但我不能混合使用这些功能。

我需要从 GeoJSON 创建一个切换层(折线层)。

是否可以无需任何外部插件或脚本就可以得到我需要的东西?

最佳答案

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

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

如果您仍然不想构建按钮或使用插件,您可以在 map 本身上设置一个点击事件,它会打开和关闭 GeoJSON 层。

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

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

map.on('click', function() {
  if(map.hasLayer(geoLayer)) {
    map.removeLayer(geoLayer);
  } else {
    map.addLayer(geoLayer);
  }
});

希望对您有所帮助..

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

var baseLayers = {
  "Markers": markerLayer,
  "GeoJSON": geoLayer
};
L.control.layers(baseLayers).addTo(map);

不知道这个 ;)

如果您想要复选框而不是单选按钮,请改用它

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

http://codepen.io/anon/pen/qEaEBg

关于javascript - Leaflet - 在没有插件的情况下切换 GeoJSON 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27610708/

相关文章:

javascript - 单击 Leaflet 中的标记时,如何防止弹出窗口显示?

javascript - 等待 JavaScript 中的获取结果

javascript - 为 View 外部化 JavaScript

php - 在mysql中查询显示纬度经度多边形

java - 通过 JDBC 插入时出错

ruby-on-rails - 使用最大距离属性反向查询 Rails-Geocoder 中的位置

javascript - 为大型项目的新版本从 Flash 切换到 HTML5?

javascript - 传单js : draw POIs as canvas

javascript - 本地图缩放时,圆圈在移动设备上消失

javascript - Leaflet JS - 实现手势处理以强制执行 2 指滚动