Я столкнулся с той же проблемой. Это, конечно, не то, что я ожидаю, событие щелчка в моей терминологии подразумевает, что расстояние между mouseDown и mouseUp ниже определенного порога.
Вот код, который работает в моих экспериментах:
<script type="text/javascript">
var mouseDownLocation;
var mouseClickThreshold = 5;
function init()
{
var map = new VEMap('myMap');
map.LoadMap(new VELatLong(-27.15,153),8,'r' ,false);
map.AttachEvent("onmousedown", function(e) {
var x = e.mapX;
var y = e.mapY;
mouseDownLocation = new VEPixel(x, y);
});
map.AttachEvent("onmouseup", function(e) {
var x = e.mapX;
var y = e.mapY;
if(Math.abs(mouseDownLocation.x - x) +
Math.abs(mouseDownLocation.y - y) > mouseClickThreshold) {
return;
}
pixel = new VEPixel(x, y);
var LL = map.PixelToLatLong(pixel);
document.getElementById("myMapInfo").innerHTML =
"Pixel X: " + x + " | Pixel Y: " + y +
"<br /> LatLong: " + LL +
"<br/>" + e.eventName;
});
}
</script>
Сообщение будет отображаться только в том случае, если мышь не слишком много двигалась между событиями «вниз» и «вверх», т. Е. Обычное нажатие должно вызвать ее, перетаскивание не должно.
Это использует VE API в версии 6.2 и ожидает два div с идентификаторами "myMap" и "myMapInfo". Это также экспериментальный код, который можно улучшить, но общий подход кажется нормальным.