Web ページに 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 に答える