【问题标题】:Custom layer control with leaflet带有传单的自定义图层控制
【发布时间】:2016-03-07 12:55:04
【问题描述】:

我想用传单制作一个自定义图层控件,但我不知道为什么它不起作用。单击复选框时,我在 Firebug 中收到以下错误:TypeError: obj is undefined。我将此代码添加到我的 main.js 脚本中:

// Custom layerpanel -- WORK IN PROGRESS!

    $( "input" ).click(function( event ) {
        layerClicked = window[event.target.value];

            if (map.hasLayer(layerClicked)) {
                map.removeLayer(layerClicked);
            }
            else{
                map.addLayer(layerClicked);
            } ;
    });

这是我的索引文件:

<div class="checkbox">
   <label><input type="checkbox" value="mapDataLayer" checked>
   Option 1</label>
</div>

【问题讨论】:

    标签: javascript custom-controls leaflet layer


    【解决方案1】:

    通过var myVarName 设置的变量不能作为window 对象(window[event.target.value]) 的属性访问。你必须以类似的方式分配你的层:window["mapDataLayer"] = L.geoJson(...)

    注意事项:

    • 您的 GeoJSON 图层的特征为 0,因此您不会看到任何新内容。
    • 您的复选框最初被选中,但图层不在地图上。因此,当复选框未选中时,图层会添加到地图上,反之亦然。

    【讨论】:

    • 我按照您的建议进行了更改,并且有效。唯一的问题是,当我进行高级搜索时,我必须双击提交按钮才能使图层控制再次工作。
    • Ghybs 管理员删除了 plunker。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2016-06-17
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多