gpt4 book ai didi

jquery - 带有点击处理程序和滚动条的 Google map 信息框

转载 作者:行者123 更新时间:2023-12-03 22:39:09 25 4
gpt4 key购买 nike

我有一个使用 Google Maps javscript API 和 Infobox 插件( native InfoWindow 的可自定义版本)的应用程序。

它工作得很好,直到我遇到以下用例:如果内容很大,我需要一个带有滚动条的信息框,并且它还需要包含几个带有点击监听器的 HTML 元素。

为了支持信息框中的点击处理程序,我通常需要设置enableEventPropagation= true,并使用 jQuery delegate 来设置点击处理程序。如果我不允许事件传播,jQuery 委托(delegate)将不起作用。

这工作得很好,直到我不得不将它与功能滚动条结合起来!我发现滚动条仅在启用事件传播= false 时才起作用,因为如果启用事件传播,则拖动事件只会传递到 map 并解释为平移。

有谁知道我可以做些什么来在信息框内容上拥有一个功能滚动条,并能够在某些内容上设置点击处理程序?

对我来说,enableEventPropagation=false 可以解决这两个问题,这听起来合乎逻辑,因为我不明白为什么需要将点击事件传播到 map 才能触发我附加到 html 元素的处理程序。

这是我的信息框的设置对象:

{
content: "[my html in here]",
disableAutoPan: false,
pixelOffset: new google.maps.Size(-77, 10),
boxClass: "infoBox",
infoBoxClearance: new google.maps.Size(18, 30),
closeBoxMargin: "14px 6px",
pane: "floatPane",
enableEventPropagation: true
};

最佳答案

以防万一您仍在处理此问题,您需要更改 map 选项以在鼠标进入信息框时关闭平移/缩放。你可以使用这样的东西:

$(document).delegate("div#ib", "mouseenter", function() {

theMap.setOptions({
draggable: false,
scrollwheel: false
});
console.log("mouse enter detected");

});

$(document).delegate("div#ib", "mouseleave", function() {
theMap.setOptions({
draggable: true,
scrollwheel: true
});
console.log("mouseleave detected");
});

关于jquery - 带有点击处理程序和滚动条的 Google map 信息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8170244/

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