谷歌地球API:鼠标悬停事件似乎被鼠标移动阻止,而鼠标按下
Google Earth API: mouseover event seems to be blocked by mousemove while mousedown
我正在制作一个页面,在Google地球的一个区域上布置一个白色正方形多边形的网格。当您单击一个时,它会将颜色更改为棕色,再次单击将其更改回白色。我试图得到它,所以当你鼠标按下和鼠标移动时,无论你鼠标悬停在什么多边形上也会变成棕色。以下是我设置事件侦听器的方法:
google.earth.addEventListener(ge.getGlobe(), 'mousedown', function(event) {
var placemark = event.getTarget();
if (placemark.getType() == 'KmlPlacemark' &&
placemark.getGeometry().getType() == 'KmlPolygon') {
event.preventDefault();
event.stopPropagation();
mbutton = true;
console.log(mbutton);
var lcolor = placemark.getStyleSelector().getLineStyle().getColor();
var pcolor = placemark.getStyleSelector().getPolyStyle().getColor();
if ( lcolor.get() == "ffffffff") {
lcolor.set('ff00008B');
pcolor.set('ff00008B');
} else {
lcolor.set('ffffffff');
pcolor.set('ffffffff');
}
}
});
for ( var i = 0; i < placemarks.length; i++ ) {
google.earth.addEventListener(placemarks[i], 'mouseover', function(event) {
if (mbutton) {
console.log('over' + event.getTarget().getId());
$(placemarks[i]).trigger('mousedown');
} else {console.log('not: ' + event.getTarget().getId())}
});
}
google.earth.addEventListener(ge.getGlobe(), 'mousemove', function(event) {
if (mbutton) {
console.log(event.getTarget().getId() + ' : ' + event.getTarget().getType());
event.preventDefault();
event.stopPropagation();
}
});
google.earth.addEventListener(ge.getGlobe(), 'mouseup', function(event) {
if (mbutton) {
mbutton = false;
console.log(mbutton);
}
});
问题在于,看起来用户鼠标按下的任何多边形都是鼠标移动将看到的唯一多边形,并且鼠标悬停根本不会触发,除非用户将鼠标悬停在多边形上,就好像在鼠标按钮没有按下的瞬间鼠标悬停有机会触发。以下是 Chrome 中事件侦听器的调试信息的输出:
1: true createRaster.js:307
2: 1 : KmlPlacemark createRaster.js:338
3: 1 : KmlPlacemark createRaster.js:338
4: [truncated for brevity]
5: 1 : KmlPlacemark createRaster.js:338
6: over2 createRaster.js:329
7: false
这是从鼠标向下移动到第一个多边形(第 1 行(和摩西到第二个多边形(第 2-6 行(和 mousupping(第 7 行(。在鼠标移动触发的整个过程中,它都停留在用户最初单击的目标上。当鼠标向上时,在鼠标向上事件触发鼠标悬停事件之前的一瞬间。
无论鼠标按钮是否按下,鼠标悬停事件都不应该触发吗?我的代码中是否有某些内容阻止此事件触发?
像这样:
var clicking = $(window).on("mousedown", function (e) {
return true;
e.preventDefault();
});
$(target).on("mouseover", function () {
while (clicking == true) {
doTheThing();
}
});
相关文章:
- js:停止鼠标移动
- Zingchart-平移键和鼠标移动
- 在鼠标上触发鼠标移动'的当前位置
- 当用户将鼠标移到屏幕/图表上时,自动滚动将暂停.如果鼠标移动停止,自动滚动将再次恢复
- 如何在谷歌地图上用鼠标移动标记
- 如何在鼠标移动事件时更改图像的窗口中心和宽度
- 如何模仿鼠标移动和事件
- 鼠标点击不会'不起作用,鼠标移动可以
- 有没有办法提高鼠标移动的分辨率
- 如何在JS中随机化backgroundPosition而不使用鼠标移动来制作万花筒的动画
- 如何使用onmousemove函数在每次鼠标移动时更改背景图像
- 使用jQuery/CSS设置的鼠标光标在鼠标移动之前不会更改
- 在谷歌地图中用鼠标移动标记
- 在HTML5画布中绘制鼠标移动的半透明线条
- 如何使用Protractor/Senium将鼠标移动到任意点
- 防止鼠标移动对elementFromPoint的攻击
- 如果鼠标悬停得很快,Jquery鼠标移动会错过一些单元格
- 检查人员是否通过鼠标移动离开网站
- 使用鼠标移动操作选择选项
- 如何在D3Javascript中将鼠标移动到节点上时显示和隐藏节点