地图 onclick 事件优先于图形点击事件
Map onclick event taking precedence over graphic click event
我在显示信息窗口的地图上注册了一个点击事件。但我还在 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
});
我明白了。地图的点击处理程序有一个 属性 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
}
});
我在显示信息窗口的地图上注册了一个点击事件。但我还在 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
});
我明白了。地图的点击处理程序有一个 属性 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
}
});