我的网页上有一个 Bing 地图,我想检测用户何时在窗口中单击。但是,我不希望检测用户何时拖动地图(这也会产生“点击”事件)。仅获得“纯”点击事件的最佳方法是什么?
问问题
1019 次
2 回答
3
我的解决方案最终是手动检查单击位置是否接近按下鼠标的位置。
Microsoft.Maps.Events.addHandler(map, "click", clickHandler);
Microsoft.Maps.Events.addHandler(map, "mousedown", function(me) { lastMouseDownPoint = new Microsoft.Maps.Point(me.getX(), me.getY());});
function clickHandler(mouseEventArgs){
var point = new Microsoft.Maps.Point(mouseEventArgs.getX(), mouseEventArgs.getY());
//Drag detection
// Edited since the comma is incorrect, should be a plus as per pythagorean theorem
var dist = Math.sqrt(Math.pow(point.x-lastMouseDownPoint.x,2) + Math.pow(point.y-lastMouseDownPoint.y,2));
if(dist > 5) {
// We call this a drag
return;
}
// We have a "pure" click and can process it
}
于 2011-08-31T08:14:50.693 回答
1
很简单:
Microsoft.Maps.Events.addHandler(map, 'click', onClick);
function onClick(e) {
if (e.mouseMoved === false && e.isPrimary === true) {
// Left click not being a drag
...
}
}
mouseMoved 通过拖放为真,否则为假。
MouseEventArgs 文档http://msdn.microsoft.com/en-us/library/gg406731.aspx没有引用 mouseMoved :/
于 2014-07-01T12:00:03.770 回答