如何使用 jQuery 在 OpenLayers 中捕获点击事件?
How to capture click event in OpenLayers with jQuery?
我正在尝试在归因中捕获点击。我想改为显示模式 window。
但如您所见here,无论如何它都会显示出处。
$(".ol-attribution").click(function() {
alert("It's showing the attribution anyway");
return false;
});
提前致谢!
问题的根源在于,ol3 点击处理程序在您尝试添加的处理程序之前执行,因此最好的方法可能是在添加您自己的处理程序之前删除原始的点击监听器。
因为 ol3 侦听器是由 Closure 库添加的,所以它不能用 jQuery 删除,并且用 vanilla JS 删除它不必要地复杂,所以你最安全的选择是只删除元素上的所有侦听器。这可以通过以下(有点老套,但我不知道更好的选择)代码段(参见 Remove All Event Listeners of Specific Type)来完成:
var btn = document.querySelector('.ol-attribution button');
var btnClone = btn.cloneNode(true);
btn.parentNode.replaceChild(btnClone, btn);
Fiddle: http://jsfiddle.net/Kenny806/ds9em02a/
另一种方法是属性一展开就折叠,这样从用户的角度来看,什么也不会发生。 A(有点笨拙,但希望可读)fiddle 这里:http://jsfiddle.net/Kenny806/udpdohqg/1/
它在 fiddle 中工作有点不可靠,但在我修改的 ol3 归因示例中工作正常。
你还需要归属地控制的功能吗?对我来说,您似乎只想要一个在单击时打开弹出窗口的按钮。也许创建自定义控件是有意义的,例如 example.
禁用原来的属性控制,将ol.control.defaults上的属性attribution
设置为false
。
var map = new ol.Map({
controls: ol.control.defaults({
attribution: false
}).extend([
new app.CustomControl()
]),
我正在尝试在归因中捕获点击。我想改为显示模式 window。
但如您所见here,无论如何它都会显示出处。
$(".ol-attribution").click(function() {
alert("It's showing the attribution anyway");
return false;
});
提前致谢!
问题的根源在于,ol3 点击处理程序在您尝试添加的处理程序之前执行,因此最好的方法可能是在添加您自己的处理程序之前删除原始的点击监听器。
因为 ol3 侦听器是由 Closure 库添加的,所以它不能用 jQuery 删除,并且用 vanilla JS 删除它不必要地复杂,所以你最安全的选择是只删除元素上的所有侦听器。这可以通过以下(有点老套,但我不知道更好的选择)代码段(参见 Remove All Event Listeners of Specific Type)来完成:
var btn = document.querySelector('.ol-attribution button');
var btnClone = btn.cloneNode(true);
btn.parentNode.replaceChild(btnClone, btn);
Fiddle: http://jsfiddle.net/Kenny806/ds9em02a/
另一种方法是属性一展开就折叠,这样从用户的角度来看,什么也不会发生。 A(有点笨拙,但希望可读)fiddle 这里:http://jsfiddle.net/Kenny806/udpdohqg/1/
它在 fiddle 中工作有点不可靠,但在我修改的 ol3 归因示例中工作正常。
你还需要归属地控制的功能吗?对我来说,您似乎只想要一个在单击时打开弹出窗口的按钮。也许创建自定义控件是有意义的,例如 example.
禁用原来的属性控制,将ol.control.defaults上的属性attribution
设置为false
。
var map = new ol.Map({
controls: ol.control.defaults({
attribution: false
}).extend([
new app.CustomControl()
]),