gpt4 book ai didi

javascript - 传单上可点击的 L.control

转载 作者:行者123 更新时间:2023-11-28 19:29:09 25 4
gpt4 key购买 nike

我正在尝试将 L.Control 元素添加到我的传单 map 中。然而,一旦我将元素添加到 map 中,我注意到它不可点击。我想在这个 L.Control 元素中显示一个表单,但是我无法从下拉菜单中选择任何元素,因为点击总是会到达 map 。

这里有一个 JSfiddle:http://jsfiddle.net/fd3dnnc1/1/

以及我的 JS 代码:

var map = L.map('map').setView([0.27, 37.66], 6);

// add an OpenStreetMap tile layer
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);


var mainMenu = L.Control.extend({
options: {position: 'topright'},

onAdd : function (map) {
this._div = L.DomUtil.create('div', 'mainMenu');
this._div.innerHTML = '<h3>Main Menu</h3>';

this._div.innerHTML += '<h4>Data:</h4> MODIS NDVI <h4>AOI:</h4> Kenya, Africa <br><br>'
this._div.innerHTML += '<h4>Indicator:</h4>'
this._div.innerHTML += '<form><form id="form" class="form" action="" method="POST">' +
'<select name="indicator"><option value="NDVI_ABS">NDVI<br>' +
'<option value="NDVI_VCI">VCI<br>' +
'<option value="RAIN_ABS">Precipitation<br>' +
'</select>';
this._div.innerHTML += '<input type="submit" value="Refresh Map" name="submit"></form>';
return this._div;
},
});
map.addControl(new mainMenu());

关于如何使其可点击有什么建议吗?

最佳答案

如果你看一下 L.Control.Layers 的来源随 Leaflet 提供,您可以看到它们使用 L.DomEvent 来禁用或停止容器上单击和/或滚动事件的传播。您应该执行完全相同的操作,它将按预期工作:

if (!L.Browser.touch) {
L.DomEvent
.disableClickPropagation(this._div)
.disableScrollPropagation(this._div);
} else {
L.DomEvent.on(this._div, 'click', L.DomEvent.stopPropagation);
}

更新的 fiddle :http://jsfiddle.net/az9w0r5L/

关于javascript - 传单上可点击的 L.control,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27233856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com