Bing 地图绘图工具模块 - 事件
Bing Map Drawing Tool Module - events
我正在使用 Bing Map Ajax Control V7 进行测试/学习。
我用信息框创建了几个图钉,并添加了事件:
function InsertEvent(mark, infoBox)
{
var obj = {marker : {}, infoWind : {}};
obj.marker.entity = mark;
obj.marker.eID = Microsoft.Maps.Events.addHandler(mark, "click", function(e) {toggleInfo(e, infoBox, true)});
obj.infoWind.entity = infoBox;
obj.infoWind.eID = Microsoft.Maps.Events.addHandler(infoBox, "mouseleave", function(e) {toggleInfo(e, infoBox, false)});
eventsID.push(obj);
}
因此,这些事件运行良好,直到我将 DrawningToolModule 添加到地图。
function GetMap()
{
map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),
{credentials: "My extra top secret Bing Map Key",
center: new Microsoft.Maps.Location(51.201547622680664, 16.16974449157715), zoom: 15 });
Microsoft.Maps.loadModule('Microsoft.Maps.Search', { callback: searchModuleLoaded });
Microsoft.Maps.registerModule("DrawingToolsModule", "DrawingToolsModule/DrawingToolsModule.js");
Microsoft.Maps.loadModule("DrawingToolsModule", { callback: function () {
drawTools = new DrawingTools.DrawingManager(map, {toolbarContainer : document.getElementById("toolbarContainer")});
}
});
}
加载数据后,图钉点击反应正常。
通过 DrawingTool 添加自定义图钉后 - 事件正常。
绘制任何形状(多边形、多边形、圆形)后 - 我的图钉事件未调用。
我添加了一个函数助手来检查事件是否仍然可用:
function showEventsCount()
{
alert("Registered events: " + eventsID.length + "\nFirst entity has click event: " +
Microsoft.Maps.Events.hasHandler(eventsID[0].marker.entity, "click") /*map.entities.getLength()*/);
}
结果我是真的。
这是阻塞事件的错误,还是我遗漏了什么?
可能的问题是您的多边形位于图钉上方,因此阻止了点击事件或存在问题。或者,图钉上方有一个 EntityCollection,其中包含多边形。这是 Bing Maps v7 的一个已知问题。尝试使用以下代码扁平化地图呈现多边形的方式:
map.getMode().setOptions({drawShapesInSingleLayer: true });
我正在使用 Bing Map Ajax Control V7 进行测试/学习。 我用信息框创建了几个图钉,并添加了事件:
function InsertEvent(mark, infoBox)
{
var obj = {marker : {}, infoWind : {}};
obj.marker.entity = mark;
obj.marker.eID = Microsoft.Maps.Events.addHandler(mark, "click", function(e) {toggleInfo(e, infoBox, true)});
obj.infoWind.entity = infoBox;
obj.infoWind.eID = Microsoft.Maps.Events.addHandler(infoBox, "mouseleave", function(e) {toggleInfo(e, infoBox, false)});
eventsID.push(obj);
}
因此,这些事件运行良好,直到我将 DrawningToolModule 添加到地图。
function GetMap()
{
map = new Microsoft.Maps.Map(document.getElementById("mapDiv"),
{credentials: "My extra top secret Bing Map Key",
center: new Microsoft.Maps.Location(51.201547622680664, 16.16974449157715), zoom: 15 });
Microsoft.Maps.loadModule('Microsoft.Maps.Search', { callback: searchModuleLoaded });
Microsoft.Maps.registerModule("DrawingToolsModule", "DrawingToolsModule/DrawingToolsModule.js");
Microsoft.Maps.loadModule("DrawingToolsModule", { callback: function () {
drawTools = new DrawingTools.DrawingManager(map, {toolbarContainer : document.getElementById("toolbarContainer")});
}
});
}
加载数据后,图钉点击反应正常。 通过 DrawingTool 添加自定义图钉后 - 事件正常。 绘制任何形状(多边形、多边形、圆形)后 - 我的图钉事件未调用。
我添加了一个函数助手来检查事件是否仍然可用:
function showEventsCount()
{
alert("Registered events: " + eventsID.length + "\nFirst entity has click event: " +
Microsoft.Maps.Events.hasHandler(eventsID[0].marker.entity, "click") /*map.entities.getLength()*/);
}
结果我是真的。
这是阻塞事件的错误,还是我遗漏了什么?
可能的问题是您的多边形位于图钉上方,因此阻止了点击事件或存在问题。或者,图钉上方有一个 EntityCollection,其中包含多边形。这是 Bing Maps v7 的一个已知问题。尝试使用以下代码扁平化地图呈现多边形的方式:
map.getMode().setOptions({drawShapesInSingleLayer: true });