在另一个事件被解雇后才开火

时间:2010-10-26 20:18:02

标签: javascript extjs openlayers

我有一个带缩放控件的GeoExt地图面板。当我的地图上的图层“超出范围”而他们的setVisibility设置为false时,我真的想要禁用树面板中的一些节点。我有我的zoomend事件工作,我也有一个checkchange事件工作,但如果用户将zoombar推到多个级别,则checkchange事件会被多次评估,而另一个问题是即使在zoomend事件结束后仍然检查更改每次用户只打开或关闭节点的复选框时都会被触发。我真的需要一种方法来控制这个checkchange事件只运行一次,如果用户没有使用zoombar就阻止它被触发......

map.events.on({ "zoomend": function (e) {

                layerTree.on("checkchange", function (node, checked) {
                    alert(node.text + "Inside event");
                    if(checked == false)
                        node.disable();
                    else if(checked == true)
                        node.enable();

                });

                    if (this.getZoom() > 7) {
                        tib_villages.setVisibility(true);
                        tib_lakes.setVisibility(true);
                        tib_townships.setVisibility(true);


                    }
                    else {

                                    tib_villages.setVisibility(false);
                                    tib_lakes.setVisibility(false);
                                    tib_townships.setVisibility(false);

                        if (this.getZoom() > 5) {
                            infrastructure.setVisibility(true);
                            geography.setVisibility(true);
                            geography2.setVisibility(true);
                            tib_countys.setVisibility(true);

                        }
                        else{
                            infrastructure.setVisibility(false);
                            geography.setVisibility(false);
                            geography2.setVisibility(false);
                            tib_countys.setVisibility(false);
                        }
                    }//end else

                }//end function (e)

            }); //end map.events.on

感谢您的所有时间和反馈:)

elshae

1 个答案:

答案 0 :(得分:1)

事实证明,这项工作已经为我们完成了:)。在http://trac.geoext.org/attachment/ticket/235/autoDisableLayerNode.patch有一个补丁,它将根据minScale / maxScale属性自动禁用/启用节点等。我通过将此文件放在我的GeoExt目录中并在我的GeoExt目录中运行以下命令来应用补丁:

patch -p0 < autoDisableLayerNode.patch

我希望这有帮助!它为我创造了奇迹:)

elshae