传单打开多个弹出没有绑定到一个标记
Leaflet open multiple popups without binding to a marker
我正忙着用传单写一个简单的地图实现,但是我遇到了一点障碍。我试图设置我的地图,并添加了一个自定义控件来显示标签(这将显示弹出窗口)基于一个复选框的选择。
我的自定义控件是这样的
var checkBoxControl = L.Control.extend({ options: { position: 'topright' }, onAdd: function (map) { var container = L.DomUtil.create('input', 'leaflet-control'); container.style.backgroundColor = 'white'; container.id = 'labels_checkbox'; container.style.width = '30px'; container.style.height = '30px'; container.label = "Labels"; container.type = 'checkbox'; container.onclick = function () { var checkBox = $("#labels_checkbox"); var checkBoxValue = checkBox[0]; var labelsChecked = checkBoxValue.checked; var bounds = mymap.getBounds(); for (var i = 0; i < markers.length; i++) { marker = markers[i].mark; if (bounds.contains(marker.getLatLng())) { var previewLabel = markers[i].previewLabel; if (labelsChecked == true) { console.log('previewLabel', previewLabel); mymap.addLayer(previewLabel).fire('popupopen'); } else { previewLabel.close(); } } } }; return container; } });
我可以看到,根据我的控制台,它正在获取所有周围的标记,但地图不会打开这些标记?
是否有一种方法可以让我打开一个弹出框而不将其绑定到标记?
谢谢
您必须更改L.Map行为以防止自动关闭弹出窗口。
// prevent a popup to close when another is open
L.Map = L.Map.extend({
openPopup: function (popup, latlng, options) {
if (!(popup instanceof L.Popup)) {
var content = popup;
popup = new L.Popup(options).setContent(content);
}
if (latlng) {
popup.setLatLng(latlng);
}
if (this.hasLayer(popup)) {
return this;
}
// NOTE THIS LINE : COMMENTING OUT THE CLOSEPOPUP CALL
//this.closePopup();
this._popup = popup;
return this.addLayer(popup);
}
});
请看下面的例子
相关文章:
- Bootstrap折叠手风琴一个面板打开,所有其他面板关闭
- 将一个对象转换为一个单键对象数组(带下划线?)
- 一个按钮中的两个onClick功能,并希望一个接一个地发生一个单击功能
- 单击单选按钮禁用另一个单选按钮
- 为什么在模糊事件处理程序中添加setTimeout会修复“;掩蔽”;另一个单击处理程序的
- 选择其中一个单选按钮,然后单击“提交”,重定向其他页面
- AngularJs-我可以从另一个元素打开一个元素的popover吗
- jQuery复选框和span共享一个单击事件
- 通过它查询谷歌地图上已经存在的标记's的lat和long,并以编程方式在其上触发一个单击事件
- jquery从6个表单中只选择一个单选
- 有可能在谷歌地图api中为一个标记打开多个infoWindows吗
- IE使用类jquery返回相同的最后一个单选按钮值
- 当我转到另一个单选按钮时;s的价值观来了
- 如何将一个单例传递给另一个对象,使该对象的所有实例都引用同一个单实例
- 一次将选择一个单选按钮
- 联系表单打开PHP文件而不是显示弹出窗口
- 一个接一个地打开链接
- 单击一个按钮打开多个javascript弹出框
- 有一个按钮打开右边的表单JQuery
- 如何打开更改单选按钮值取决于另一个单选按钮是否被选中