传单:使用分组图层控件插件扩展自定义控件
Leaflet: Extending custom control with Grouped Layers Control plugin
我正在使用一个名为Leaflet.groupedlayercontrol的传单插件,并试图弄清楚如何将这个groupedlayercontrol插件放置在HTMLdiv中,以便我可以更好地管理它。下面的代码和 PLNKR 在这里。
我的假设覆盖对象如下所示:
var map = new L.Map('mapbox', {
'center': [39.76185, -104.881105],
'zoom': 9,
'layers': [
L.tileLayer('//{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {
attribution: 'text here'
})
]});
var pizza = L.marker([39.8443948439646, -104.97711181640625]).addTo(map);
var hamburger = L.marker([39.97291055131899, -105.08697509765625]).addTo(map);
var pie = L.marker([40.111688665595956, -104.776611328125]).addTo(map);
var overlaysOptions = {
groupCheckboxes: true,
collapsed: false,
position: 'topright'
};
var overlays = {
"Category One":{
"Pizza": pizza,
"Hamburger": hamburger
},
"Category Two": {
"Pie": pie
}
};
L.Control.Overlays = L.Control.extend({
onAdd: function (map) {
var container = L.DomUtil.create('div', 'control-overlays');
container.innerHTML = L.DomUtil.create('<div class="panel panel-default"><div class="panel-heading" id="headingOne"><h4 class="panel-title"><a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Heading Title</a></h4></div><div id="collapseOne" class="panel-collapse collapse in"><div class="panel-body">Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.</div></div></div>', container);
return container;
},
});
//L.control.groupedLayers(null, overlays, overlaysOptions).addTo(map);
var controlOverlays = new L.Control.Overlays(overlays, overlaysOptions).addTo(map);
有人知道如何在 HTMLdiv 中获取分组图层插件以便我可以使用它吗?谢谢!
在开始之前,有几个错误需要解决。首先,您的填充文本包含一个撇号(在单词"have't"中(,需要对其进行转义,否则它将使之后的所有内容无效。其次,第二次在自定义控件函数中调用L.DomUtil.create
时,使用不正确。如果要将该 HTML 添加到container
div 中,只需使用container.innerHTML = '<div class="panel panel-default"> [etc. etc...]'
修复这些内容后,您将看到分组图层控件和自定义控件都显示在地图上。为了得到另一个内部,我遵循了Jeff Mitzelfelt 在Google群组讨论中发布的技巧。基本上:创建图层控件(分配给命名var
(并将其添加到地图中;创建另一个div(带有 id
(,您要在其中放置图层控件;从原始控件中删除容器;然后使用图层控件的id
将图层控件追加到新div 中。
以下内容会将分组控件放在引导面板中:
L.Control.Overlays = L.Control.extend({
onAdd: function (map) {
var container = L.DomUtil.create('div', 'control-overlays');
container.innerHTML = '<div class="panel panel-default"><div class="panel-heading" id="headingOne"><h4 class="panel-title"><a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Heading Title</a></h4></div><div id="collapseOne" class="panel-collapse collapse"><div class="panel-body" id ="controlGoesHere">Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven''t heard of them accusamus labore sustainable VHS.</div></div></div>';
return container;
}
});
var groupControl = L.control.groupedLayers(null, overlays, overlaysOptions).addTo(map);
var controlOverlays = new L.Control.Overlays(overlays, overlaysOptions).addTo(map);
groupControl._container.remove();
document.getElementById('controlGoesHere').appendChild(groupControl.onAdd(map));
分组控件以奇怪的状态开始(组关闭,而其所有项目都打开(,但我认为这只是调整控件的一些选项的问题。
编辑:这是包含这些更改的更新 plunk:
http://plnkr.co/edit/6gtZIsUPVg0WCJ3WObNw?p=preview
- 音频控件在mouseover上显示,在mouseout上淡出
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- Windows形成web浏览器控件和Javascript更改的DOM
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 如何更改文本框控件的不透明度值
- 所有控件的组合框
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 在angularjs中创建自定义控件的推荐方法
- 自定义控件中的双向绑定在SAPUI5中不起作用
- 如何在ASP中为用户控件添加Javascript对象网
- Dynamics 2016内部部署Crm客户端脚本.选项集控件类型缺少方法
- 如何确定控件/插件是否从 CRM 2011 中功能区上的自定义按钮触发
- 传单:使用分组图层控件插件扩展自定义控件
- jQuery Mobile:动态表单创建显示本机控件与jQuery Mobile插件控件
- 为什么视频js endcard插件会在播放器中添加本机控件
- 拖放插件拖动HTML控件
- Visual Studio JavaScript智能插件,用于VB生成控件
- 如何将 jQuery 警报插件与 asp.net 按钮控件一起使用
- Jquery验证插件,用于验证带有控件的单独部分