2016-08-20 63 views
1

我在显示infowindow的地图上注册了一个单击事件。但我还在map.graphics图层上注册了一个点击事件,它会显示图形的infowindow。地图onclick事件优先于图形点击事件

问题是,当我点击图形时,它的infowindow显示为一分秒,然后它被地图的infowindow重写。

如何避免点击图形时触发地图的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 
}); 

回答

0

我想通了。地图的点击处理程序有一个属性event.graphic,如果点击图形,该属性不会为空。所以我修改了我的地图的点击处理程序,并完全删除了图形的点击处理程序。

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 
    } 
});