IE9 не запускает щелчок мыши при отображении многоугольника.Любой другой браузер, с которым я тестировал (включая IE8), работает нормально.Я думаю, что проблема связана с тем, что объект svg не передает щелчок, но я не уверен, как это исправить.Любая помощь будет принята с благодарностью.
Я сократил наш код для рисования, чтобы помочь.Используя приведенный ниже код, вы можете воспроизвести его, щелкнув карту, чтобы начать рисование, снова щелкнув мышью под исходной точкой, а затем переместив мышь влево и попытавшись щелкнуть мышью.
Примечание. Если дважды щелкнуть карту, будет запущено событие щелчка.Также, если я не нарисую tempShape на движении мыши, это будет работать.Кроме того, события mouseup и mousedown будут работать, но это будет мешать возможности перетаскивать карту во время рисования.Вот пример кода:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>
Bing Map
</title>
<style type="text/css">
#divMap
{
height: 500px !important;
width: 940px !important;
}
</style>
</head>
<body onload="init();">
<div id="divMap" style=""></div>
<script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>
<script type="text/javascript" language="javascript">
//<![CDATA[
var self = {
map: null,
drawing: {
points: [],
tempPoints: [],
stopPolygon: null,
shapeLayer: null
}
};
function init() {
self.map = new Microsoft.Maps.Map(document.getElementById('divMap'), {
credentials: "Key",
zoom: 15,
center: { latitude: 45.9213475137949, longitude: -90.4466233402491 }
});
Microsoft.Maps.Events.addHandler(self.map, 'click', drawPolyMouseClickEvent);
self.drawing.shapeLayer = new Microsoft.Maps.EntityCollection();
self.map.entities.push(self.drawing.shapeLayer);
}
function drawPolyMouseClickEvent(e) {
var x = e.getX();
var y = e.getY();
var point = new Microsoft.Maps.Point(x, y);
var loc = self.map.tryPixelToLocation(point);
var mouseMove = Microsoft.Maps.Events.addHandler(self.map, 'mousemove', drawPolyMouseMoveEvent);
self.drawing.points.push(loc);
if (self.drawing.points.length == 1) {
self.drawing.stopPolygon = new Microsoft.Maps.Pushpin(loc, { text: " ", textOffset: new Microsoft.Maps.Point(0, 0) });
self.drawing.shapeLayer.push(self.drawing.stopPolygon);
}
}
function drawPolyMouseMoveEvent(e) {
var x = e.getX();
var y = e.getY();
var point = new Microsoft.Maps.Point(x, y);
var loc = self.map.tryPixelToLocation(point);
self.drawing.tempPoints = self.drawing.points.slice(0, self.drawing.points.length);
self.drawing.tempPoints.push(loc);
self.drawing.shapeLayer.remove(self.drawing.tempShape);
if (self.drawing.tempPoints.length == 2) {
self.drawing.tempShape = new Microsoft.Maps.Polyline(self.drawing.tempPoints);
self.drawing.shapeLayer.push(self.drawing.tempShape);
}
else if (self.drawing.tempPoints.length > 2) {
self.drawing.tempShape = new Microsoft.Maps.Polygon(self.drawing.tempPoints);
self.drawing.shapeLayer.push(self.drawing.tempShape);
}
}
//]]>
</script>
</body>
</html>