当前位置: 首页 > 知识库问答 >
问题:

传单自定义层控件

金承嗣
2023-03-14

我正在尝试用一个自定义的控件替换默认的传单层控件。

我关注了另一个关于创建自定义层控件的帖子。

我可以通过层名,我已经用console.log检查了这一点。

但是,取消选中该复选框并不会删除该层。

  var firstLayer = omnivore.kml( 'localtions.kml' )
.on( 'ready', function() {
    map.fitBounds( firstLayer.getBounds() );

    firstLayer.eachLayer( function( layer ) {

        if ( layer instanceof L.Marker ) {
            layer.setIcon( layerIcon );
        }


        layer.on( 'click', function( e ) {
            document.getElementById( "location_img" ).innerHTML = '<img src="img/large/logo.png" height="60"><br>';
            document.getElementById( "location_name" ).innerHTML = layer.feature.properties.name;
            $( "#feature_info" ).stop();
            $( "#feature_info" ).fadeIn( "fast" );

            console.log( layer.feature.properties.name );
            $( "#feature_info" ).fadeOut( 5000 );

        } );
    } );
} )
.addTo( map );

    <div id="layercontrol">
      <label><input type="checkbox" data-layer="firstLayer">First Layer</label>
      </div>

    <script>
          $('div#layercontrol input[type="checkbox"]').on('change', function() {    
        var checkbox = $(this);
        var layer = checkbox.data().layer; 

        console.log(layer);

        // toggle the layer
        $('#checkbox').change(function() {
      if ($(this).is(':checked')) {
            map.addLayer(layer);
        } else {
            map.removeLayer(layer);
        }

    })
    });
    </script>

共有1个答案

马亮
2023-03-14

您希望复选框中有2个嵌套change函数--可能不是您想要的。试试这个....

<div id="layercontrol">
 <label><input type="checkbox" data-layer="firstLayer">First Layer</label>
</div>

<script>
      $('div#layercontrol input[type="checkbox"]').on('change', function() {    
    var checkbox = $(this);
    var layer = checkbox.data().layer; 

    console.log(layer);

    // toggle the layer

  if ($(this).is(':checked')) {
        map.addLayer(layer);
    } else {
        map.removeLayer(layer);
    }


});
</script>
 类似资料:
  • 我一直在研究一个传单地图,其中有许多静态层,可以使用传单的标准层控件关闭和打开。 最近,我一直在尝试使用onclick方法运行函数,当用户单击图例中的一个图像时,从地图中添加和删除层。我尝试了许多不同的方法来实现这一点,我认为这与javascript和web页面元素的加载顺序有关(但我对此相当陌生,所以我可能错了)。 无论如何,在不粘贴太多代码的情况下,我在文档的头部加载了所有脚本:

  • 本文向大家介绍Asp.net自定义控件之加载层,包括了Asp.net自定义控件之加载层的使用技巧和注意事项,需要的朋友参考一下 本文旨在给大家开发自定义控件(结合js)一个思路,一个简单的示例,可能在实际项目中并不会这样做。  先来看看效果:   1.在静态页面里开发好想要的效果 2.vs新建类库,新建类继承于WebControl  添加属性:  [Description("获取和设置触发器ID"

  • 我正在尝试为某些标记添加layercontrol。当我把城市标记添加到地图上时,它工作得很好。baseLayers控件可以正常工作,同时也创建了overlayMaps控件。但是,当单击overlayMaps控件时,标记不会显示。我肯定我犯了一个简单的错误,但我一直没能察觉出来。

  • 对于简单的定制操作,我们或许可以通过使用 layers.core.Lambda 层来完成。但对于任何具有可训练权重的定制层,你应该自己来实现。 from keras import backend as K from keras.engine.topology import Layer import numpy as np class MyLayer(Layer): def __init

  • 深度学习的一个魅力在于神经网络中各式各样的层,例如全连接层和后面章节中将要介绍的卷积层、池化层与循环层。虽然Gluon提供了大量常用的层,但有时候我们依然希望自定义层。本节将介绍如何使用NDArray来自定义一个Gluon的层,从而可以被重复调用。 不含模型参数的自定义层 我们先介绍如何定义一个不含模型参数的自定义层。事实上,这和“模型构造”一节中介绍的使用Block类构造模型类似。下面的Cent

  • 所有,我想检测用户层选择,以便同步我的侧栏与显示的层。 但我在API引用中没有看到任何层控制事件;我如何判断当这样的用户层选择发生了? 作为另一种选择,我查看了layer load和unload事件,但在返回的内容中没有看到任何标识。我是不是错过了?