在supermap地图上生成多个弹窗后无法一一关闭的解决方法
最开始遇到的问题是这样子的,用supermap为底图,在地图上所有点击生成的窗体,这些点击生成的点都是放在一个数组里面的了,所以想要实现的效果是,每次点击“撤出最后”按钮的时候只关闭隐藏销毁最后一个弹窗。纳闷了一天,终于解决,记录下。
(看下图)
想要在每次点击弹窗右上角按钮的时候,排序最后的一个定位窗口就隐藏消失
但是之前我用的以下的代码却只能作用一次去移除最后一个,看代码
function clickright(){
laymarkers.events.on({
"click": canelPoP,
"scope": laymarkers
});
}
//用于对消息框的删除
function canelPoP(event){
if (infowinPop) {
try {
infowinPop.hide();//隐藏窗体对象
infowinPop.destroy();//销毁窗体对象
laymarkers.removeMarker(laymarker);
}
catch (e) {
}
}
}
后面才发现了问题,原来是我在canelPoP()消息框的删除方法那里这是删除了单个infowinPop而没有放在我生成点的时候的数组。废话不多说,直接上我最后最新的代码!
//用于对消息框的删除
function canelPoP(event){
if (arraydd[arraydd.length-1]) {
try {
arraydd[arraydd.length-1].hide();//隐藏窗体对象
arraydd[arraydd.length-1].destroy();//销毁窗体对象
laymarkers.removeMarker(arraylaymarker[arraydd.length-1]);
}
catch (e) {
}
}
}
用数组的最后一个值就可以啦啦啦,当然重点还是要在每次点击步骤还是要先是销毁地图上的弹窗,再移除数组。