Ich habe das gleiche Problem. Es ist sicherlich nicht das, was ich erwarten würde, ein Klickereignis in meiner Terminologie impliziert, dass der Abstand zwischen mouseDown und mouseUp unterhalb einer bestimmten Schwelle liegt.
Hier ist ein Code, der in meinen Versuchen funktioniert:
<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>
Die Meldung wird nur angezeigt, wenn die Maus nicht zu viel zwischen den nach unten bewegen und Veranstaltungen, dh ein normaler Klick sollte es auslösen ein Ziehen sollte nicht.
Dies verwendet die VE-API in Version 6.2 und erwartet zwei Divs mit den IDs "myMap" und "myMapInfo". Es ist auch Code, der experimentell ist und verbessert werden könnte, aber der allgemeine Ansatz scheint in Ordnung zu sein.
Ich plane einen Reißzwecke mit einem Linksklick. Leider wird VEMap.onclick immer aufgerufen, da Benutzer die Karte normalerweise per Drag-and-Drop mit der linken Maustaste verschieben. – Jason