2010-10-26 56 views
0

我有一個變焦控制GeoExt地圖面板的事件。當我的地圖上的圖層「超出範圍」,即他們的setVisibility設置爲false時,我真的想禁用樹面板中的一些節點。我有我的zoomend事件工作,我也有一個checkchange事件的工作,但如果用戶按下zoombar多個級別,另一個問題是checkchange事件被評估一次以上,即使以後zoomend事件結束checkchange仍每次用戶僅點擊節點的複選框就會被觸發。我真的需要一種方法來控制這個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

+0

如果節點沒有與圖層相關的id,兩者之間的聯繫是什麼?它們是在圖層顯示還是另一個屬性匹配時選擇的?你如何識別要禁用的節點(在什麼屬性上)? – SW4 2010-10-27 14:20:10

+0

那麼我的節點的文字就等於我的圖層的顯示文字。我多想了一會兒,想着也許有辦法解決某種事件,但我還沒有能夠解決這個問題。下面是一個嘗試: 'layerRoot.on( 「checkchange」 功能(節點){ \t \t \t \t \t \t \t \t \t \t警報(node.text + 「內部事件」); \t \t \t \t \t \t \t \t \t \t node.disable(); \t \t \t \t \t \t \t \t \t}); \t \t \t \t \t \t \t \t \t tib_villages.setVisibility(假); \t \t \t \t \t tib_lakes.setVisibility(假); \t \t \t \t \t tib_townships.setVisibility(假);' – elshae 2010-10-27 16:13:50

+0

基本上我想某種方式使得當層通過'setVisibility(假)'關斷時,節點被停用 – elshae 2010-10-27 16:18:45

回答

1

事實證明,這項工作已經爲我們做了:)。有一個在http://trac.geoext.org/attachment/ticket/235/autoDisableLayerNode.patch一個補丁,它會自動禁用/根據自己minScale/maxScale性能等使節點通過我把這個文件在我GeoExt目錄,並在我的GeoExt目錄中運行以下命令應用補丁:

patch -p0 < autoDisableLayerNode.patch

我希望這有助於!它爲我工作奇蹟:)

elshae