2016-08-20 85 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 
    } 
});