GEE学习笔记 十九:文本、按钮和多选框

日期:

今天主要讲一下GEE自带组件中的Label、Button和checkBox。


Label这个组件就是显示我们输入的文本内容,也是最为基本和最简单的组件,相关的API文档如下图所示:

 

只有四个方法:

  • 构造方法 ui.Label(value, style)

构建一个Label组件,参数分别为:value(显示的文本内容);style(文本样式)。其中style样式这个参数我们一般都默认参数,除非是你非常在乎文本显示的格式,否则采用默认设置。

  • getValue()

获取文本内容

  • setValue(value)

设置文本内容,参数value为要显示的文本内容

  • style()
   获取文本的样式具体的样式引用官方内容如下:

Returns the widget's style ActiveDictionary, which can be modified to update the widget's styles.Properties which behave like their CSS counterparts:
- height, maxHeight, minHeight (e.g. '100px’)  高度,最大高度,最小高度
- width, maxWidth, minWidth (e.g. '100px’) 宽度,最大宽度,最小宽度
- padding, margin (e.g. '4px 4px 4px 4px' or simply '4px’) 内边距,外边距
- color, backgroundColor (e.g. 'red' or '#FF0000’) 字体颜色,背景颜色
- border (e.g. '1px solid black’) 边界样式
- fontSize (e.g. '24px’) 字体大小
- fontWeight (e.g. 'bold' or '100’) 字体样式
- textAlign (e.g. 'left' or 'center’) 文本对齐方式
- shown (true or false) 是否显示
Supported custom layout properties (see ui.Panel.Layout documentation):
- stretch ('horizontal', 'vertical', 'both’) 拉伸
      - position ('top-right', 'top-center', 'top-left', 'bottom-right', …) 位置

 

例子:

//ui.Label
var label1 = ui.Label("this is label1");
print(label1);
print("pre label1 value is", label1.getValue());
label1.setValue("change label1 value");
print("after set label1 value is", label1.getValue());


//显示样式是红色字体,绿色背景,边界3px实心黑色
print("----------------------")
var label2 = ui.Label({
 value: "this is label2",
 style: {
   color: "#ff0000",
   backgroundColor: "#00ff00",
   border: "3px solid black"
 }
})
print(label2)
print("label2 style is: ", label2.style())

显示效果:


Button组件,顾名思义就是按钮组件,GEE的APP中所有按钮都是通过这个组件生成,相关的API如下图所示:

按钮是最为最为常用的组件,相关方法如下:

  • 构造方法 ui.Button(label, onClick, disabled, style)

构造一个按钮,参数含义:

label 按钮上显示的文本内容

onClick 点击按钮回调方法

disabled 按钮是否可用

style 按钮样式

  • getDisabled()

获取按钮显示状态是否可用

  • getLabel()

获取按钮文本内容

  • onClick(callback)

设置点击按钮回调方法

  • setDisabled(disabled)

设置按钮是否可用的状态,不影响点击的onClick事件

  • setLabel(label)

设置按钮文本内容

  • style()

获取按钮样式,参考label设置的style

  • unlisted(idOrType)

取消对按钮的监控

例子:

//ui.Button
var btn = ui.Button("button1");
btn.onClick(function() {
 print("click button1");
});
print(btn);


print("button is disabled", btn.getDisabled());
print("pre button label", btn.getLabel());
btn.setLabel("newButton1");
print("new button label", btn.getLabel());


print("-------------------------");
var btn2 = ui.Button({
 label: "button2",
 onClick: function() {
   print("click button2");
 },
 style: {
   color: "#ff0000"
 }
});
print(btn2);


print("-------------------------");
var btn3 = ui.Button({
 label: "button3"
});
var btnId = btn3.onClick(function() {
 print("click button3");
})
btn3.unlisten(btnId);
print(btn3);


print("-------------------------");
var btn4 = ui.Button({
 label: "button4"
});
btn4.onClick(function() {
 print("click button4");
})
btn4.setDisabled(true);
print(btn4);

 

结果显示:

 


checkBox组件也就是复选框组件,主要是用来做各种复选操作的的组件,API文档内容如下图:

复选框的方法比较多,其实都很简单:

  • 构造方法 ui.Checkbox(label, value, onChange, disabled, style)

构建一个复选框,参数分别为:

label 复选框显示内容

value 是否选中

onChange 选中或取消选中触发的方法

disabled 是否可用

style 样式,可参考label样式

  • getDisabled()

获取是否可用

  • getValue()

获取当前是否选中

  • onChange(callback)

选中或者取消回调方法

  • setDisabled(disabled)

设置是否可用

  • setValue(value, trigger)

设置是否选中,value是否布尔值,trigger意思是否触发onChange回调方法,默认是true

  • style()
  • unlisten(idOrType)

设置是否取消对当前组件的监听

例子:

//ui.CheckBox
var roi = ee.Geometry.Point([116.38778686523438,39.925535281697286]);
var srtm = ee.Image("USGS/SRTMGL1_003");
var checkbox1 = ui.Checkbox("checkbox 1", true);
checkbox1.onChange(function(checked){
 print("1 select box: " + checked);
 //改变地图层
 Map.layers().get(0).setShown(checked);
});
print(checkbox1);
print("checkbox1 getDisabled: ", checkbox1.getDisabled());
print("checkbox1 getValue: ", checkbox1.getValue());
print("checkbox1 style: ", checkbox1.style());
//map add layer
Map.centerObject(roi, 9);
Map.addLayer(srtm);


print("------------------------");
var checkbox2 = ui.Checkbox({
 label: "checkbox 2",
 value: false,
 onChange: function(checked) {
   print("2 select box : " + checked);
 }
});
print(checkbox2);


print("------------------------");
var checkbox3 = ui.Checkbox({
 label: "checkbox 3",
 value: false,
 onChange: function(checked) {
   print("3 select box : " + checked);
 }
});
//构造方法中默认不选中,但是这里设置为选中,同时触发onChange方法
checkbox3.setValue(true, true);
print("checkbox 3 value is: " + checkbox3.getValue());
print(checkbox3);




print("------------------------");
var checkbox4 = ui.Checkbox({
 label: "checkbox 4",
 value: false
});
var checkboxId = checkbox4.onChange(function(checked) {
 print("4 select box : " + checked);
});
//取消对复选框的监听,也就是不触发onChange方法
checkbox4.unlisten(checkboxId);
print(checkbox4);

 

显示效果: