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