addlayerontop php_php – Openlayer:删除多个弹出窗口

我正在尝试使用OpenLayers 2.11创建空间调查,但是关闭多个弹出窗口的函数存在一些问题.

以下代码适用于一个弹出窗口,但该函数无法关闭多个弹出窗口并发布内容.

是否有OpenLayers方法在创建新弹出窗口时销毁旧弹出窗口?

function submitform() {

document.myform.submit();

loop_popups();

}

function loop_popups() {

for( var i = 0; i < map.popups.length; ++i ) {

map.removePopup(map.popups[i]);

};

}

Save/close

解决方法:

使用i来计算数组,同时从中删除成员只会删除一半标记.相反,尝试:

while( map.popups.length ) {

map.removePopup( map.popups[0] );

}

如果你想确保循环不会永远重复:

/**

* Closes all the popups.

*/

function closePopups() {

// Make sure the loop terminates...

var maxIterations = 100;

while( map.popups.length && --maxIterations ) {

var popup = map.popups[0];

map.removePopup( popup );

popup.destroy();

}

}

这种约束循环技术用于核电站.

假设你有5个弹出窗口.

> popups = 5,i = 0,max.popups.length = 5

> popups = 4,i = 1,max.popups.length = 4

> popups = 3,i = 2,max.popups.length = 3

> popups = 2,i = 3,max.popups.length = 2

i的值现在超过max.popups.length.循环终止,但某些弹出窗口尚未关闭. (尝试访问弹出窗口数组时,甚至可能出现索引超出范围错误…)

你可以写你的循环:

function loop_popups() {

for( var i = map.popups.length - 1; i >= 0; i-- ) {

map.removePopup(map.popups[i]);

};

}

这不再与移动目标进行比较,并且还将比原始循环执行得更快,因为与零比较比在寄存器(在大多数计算机体系结构上)上更快.

标签:php,javascript,openlayers,html

来源: https://codeday.me/bug/20190530/1185300.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值