映射onclick事件优先于图形点击事件

时间:2016-08-20 06:28:33

标签: javascript maps esri

我在地图上注册了一个点击事件,显示了一个信息窗口。但我也在map.graphics图层上注册了一个点击事件,该事件将显示图形的信息窗口。

问题在于,当我点击图形时,它的信息窗显示一瞬间,然后被地图的信息窗覆盖。

单击图形时,如何避免触发地图的onclick事件?

//map's onclick event
map.on("click", function(event){
   .
   .
   .
   map.infoWindow.show(event.mapPoint);
});

// graphic's onclick event
dojo.connect(map.graphics, "onClick", function(e) {
    var html = e.graphic.infoTemplate;
    map.infoWindow.setTitle("Address");
    map.infoWindow.setContent(html);                                                        
    map.infoWindow.resize('300', '120');
    map.infoWindow.show(slcGraphic.geometry); // slcGraphic is a global variable
});

1 个答案:

答案 0 :(得分:1)

我明白了。地图的点击处理程序具有属性event.graphic,如果单击图形,则不会为null。所以我按如下方式修改了地图的点击处理程序,并完全删除了图形的点击处理程序。

map.on("click", function(event){
   if(event.graphic)
   {
      // do what needs to happen on marker click
   }
   else
   {
      // do what needs to happen on map click
   }
});