【问题标题】:Toggle WMS layer on/off with own button click on leaflet使用自己的按钮打开/关闭 WMS 图层,单击传单
【发布时间】:2016-05-25 08:06:37
【问题描述】:

我已经创建了一些地图,现在我想使用传单和地理服务器发布它们。一切正常,我可以使用图层控制更改图层,但我想使用我自己的按钮来做到这一点。问题是我不知道怎么做。我已经创建了所有按钮,我只想创建一个函数,在点击时将 wms 平铺层添加到地图中

任何帮助将不胜感激。这是我迄今为止尝试过的,但它不起作用:

function appear(){
    var floodToday = L.tileLayer.wms("http://localhost:8080/geoserver/wms", {
        layers: 'FloodlayerWMS',
        format:'image/png',
        version: '1.1.1',
        transparent: true
    })
    map.addLayer(floodToday);
}
$(".WToday").on("click",appear);

我已经找到了这个答案:Hide/Show layerGroups in Leaflet with own Buttons,但它并没有被证明有用。我猜我的问题与使用 wms 平铺层有关,但我不确定如何解决。

更新

@HudsonPH 的回答对我来说有点复杂,因为我对 Javascript 和 JQuery 几乎一无所知,但是在稍微摆弄了一下代码并尝试了不同的选项之后,这对我有用:

$("#WToday").click(function(event) {
    var floodToday = L.tileLayer.wms("http://localhost:8080/geoserver/wms", {
    layers: 'FloodlayerWMS',
    format:'image/png',
    version: '1.1.1',
    transparent: true
    })
map.addLayer(floodToday);
});

感谢大家帮助我。

【问题讨论】:

  • 您是否尝试过使用非 wms 层进行测试?
  • @IvanSanchez:不,但我认为问题在于点击事件触发了该功能。当我将功能设置为超时时,它工作正常。问题似乎是它没有注册点击事件。

标签: jquery leaflet


【解决方案1】:

您可以使用 trim 来比较名称并触发事件。 Obs:我使用 data-attribute 来获取值

 $("[name='leaflet-base-layers']").parent().each(function (index) {
            $layerControl = $(this);
            if ($that.attr("Your-Date-Attribute").trim() == $layerControl.find("span").text().trim()) {                                  
                $(this).find("input").trigger("click");
            }
        });

【讨论】:

  • 我对 javascript 和 jquery 并没有真正的经验,所以我真的不明白你在那里做了什么。你能否解释一下你在这里做什么,我可以尝试实施它,我会让你知道它是怎么回事
  • 如果你不知道你不能扩展任何东西,你需要学习 js 和 jquery,leaflet 可以选择扩展类(这是一切的核心)。 Js , Jquery
猜你喜欢
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多