Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Bing地图绘制工具模块-事件_Javascript_Bing Maps - Fatal编程技术网

Javascript Bing地图绘制工具模块-事件

Javascript Bing地图绘制工具模块-事件,javascript,bing-maps,Javascript,Bing Maps,我正在使用Bing Map Ajax控件V7进行测试/学习。 我使用infobox创建了几个图钉,并添加了事件: function InsertEvent(mark, infoBox) { var obj = {marker : {}, infoWind : {}}; obj.marker.entity = mark; obj.marker.eID = Microsoft.Maps.Events.addHandler(mark, "

我正在使用Bing Map Ajax控件V7进行测试/学习。 我使用infobox创建了几个图钉,并添加了事件:

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添加自定义图钉后-事件就可以了。 绘制任何形状(多边形、多边形、圆形)后,不会调用图钉的my事件

我添加了一个函数助手来检查事件是否仍然可用:

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 maps v 8中的替代选项是什么?未捕获类型错误:map.getMode(…)。setOptions不是函数。此代码适用于bing地图的第7版。它在v8中已被弃用。我的意思是,这个函数在V8中不存在,因为控件现在默认情况下会这样做。V8控件以与V7完全不同的方式处理渲染。所有形状都渲染为两个HTML5画布中的一个。在V7中,每个形状都是它自己的SVG。