天天看點

Google Earth Engine(GEE)——“不聽”unlisten()實作面闆的“隐身”

unlisten()

方法提供了删除在小部件上注冊的回調函數的能力。這有助于防止觸發隻應發生一次或在某些情況下發生的事件。

onClick()

 或的傳回值

onChange()

是一個 ID,可以傳遞給

unlisten()

它以使小部件停止調用該函數。要取消注冊所有事件或特定類型

unlisten()

的事件,請分别調用不帶參數或事件類型(例如 

'click'

'change'

)參數。以下示例示範

unlisten()

如何友善打開和關閉面闆:

函數:

unlisten(idOrType)

删除回調。
           

Deletes callbacks.

Arguments:

this:ui.widget (ui.Widget):

The ui.Widget instance.

idOrType (String, optional):

在回調注冊期間由 onEventType() 函數傳回的 ID、事件類型或什麼都沒有。如果傳遞了 ID,則删除相應的回調。如果傳遞了事件類型,則删除該類型的所有回調。如果沒有傳遞任何内容,則删除所有回調。
           

Either an ID returned by an onEventType() function during callback registration, an event type, or nothing. If an ID is passed, the corresponding callback is deleted. If an event type is passed, all callbacks for that type are deleted. If nothing is passed, all callbacks are deleted.

代碼:

//建立一個面闆,最初是隐藏的。
var panel = ui.Panel({
  style: {
    width: '400px',
    shown: false//這裡顯示是false
  },
  widgets: [
    ui.Label('Click on the map to collapse the settings panel.')
  ]
});

// 建立一個按鈕以取消隐藏面闆。
var button = ui.Button({
  label: 'Open settings',
  onClick: function() {
    // 隐藏按鈕。
    button.style().set('shown', false);
    // 顯示面闆。
    panel.style().set('shown', true);

    // 暫時使地圖單擊隐藏面闆并顯示按鈕。
    var listenerId = Map.onClick(function() {
      panel.style().set('shown', false);
      button.style().set('shown', true);
      // 面闆隐藏後,地圖不應嘗試通過監聽點選來關閉它。
      Map.unlisten(listenerId);
    });
  }
});

// 将按鈕添加到地圖并将面闆添加到根。
Map.add(button);
ui.root.insert(0, panel);
           

最後結果:

首先展現出來的是兩個按鈕

Google Earth Engine(GEE)——“不聽”unlisten()實作面闆的“隐身”

 當點選第一個按鈕時:

Google Earth Engine(GEE)——“不聽”unlisten()實作面闆的“隐身”

 點選第二個按鈕:

Google Earth Engine(GEE)——“不聽”unlisten()實作面闆的“隐身”

 當點選地圖的時候這兩個按鈕會同時再出現,面闆則會消失。

繼續閱讀