多角形を表示するときにIE9がマウスクリックを発していません。私がテストした他のすべてのブラウザ(IE8を含む)は正常に動作します。私は問題がクリックを伝播しないsvgオブジェクトと関係があると思うが、それを修正する方法はわからない。どんな助けでも大歓迎です。Bing Ajax v7がIE9でクリックイベントを発生しない
私は描画コードを削除しました。下のコードを使用すると、地図をクリックして描画を開始し、元のポイントの下をもう一度クリックし、マウスを左に移動してクリックすることで再現できます。
注:マップをダブルクリックすると、クリックイベントが発生します。また、私がmousemoveに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>