2016-08-20 3 views
1

Ich habe ein Klick-Ereignis auf der Karte registriert, die ein Infofenster zeigt. Aber ich habe auch ein Klickereignis auf der Ebene map.graphics registriert, das das Infowindow der Grafik anzeigen wird.Karte onclick Ereignis Vorrang vor Grafik klicken Ereignis

Das Problem ist, dass wenn ich auf die Grafik klicke, wird ihr Infofenster für einen Bruchteil einer Sekunde angezeigt und dann wird es durch das Infowindow der Karte überschrieben.

Wie kann ich verhindern, dass das Onclick-Ereignis der Map ausgelöst wird, wenn auf eine Grafik geklickt wird?

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

Antwort

0

Ich fand es heraus. Der Klick-Handler der Karte hat eine Eigenschaft event.graphic, die nicht null ist, wenn auf eine Grafik geklickt wird. Also habe ich den Click-Handler meiner Map wie folgt modifiziert und den Click-Handler der Grafik komplett entfernt.

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