跟着知乎大佬 无形的风 学GEE Day·5
大纲:地图组件Map、地图图例生成
一、地图组件Map
Map组件即打开影像时所使用的默认界面,常用方法包括添加组件、图层到Map上,以及对象居中显示、清理Map、获取Map信息(边界、分辨率、中心、缩放级别)、插入组件到指定位置、获取所有图层、移除组件、获取样式、获取组件等。
var maps=[]
var map = ui.Map();构造map
map.add(ui.panel([label,btn],ui.Panel.Layout.Flow("horizontal")));插入定义好的label和button组件
map.add(ui.Label(name));插入label组件
map.setControlVisibility(false);隐藏地图上所有操作组件
maps.push(map);插入列表
var linker = ui.Map.Linker(maps);
var leftPanel = ui.Panel([maps[0],maps[1]],null,{stretch:'both'});定义左面板由maps中前两个对象组成,同等可以定义右面板内容,进而实现地图要素的四分显示
var mainPanel = ui.Panel();
mainPanel.style().set("stretch","both");
mainPanel.setLayout(ui.Panel.Layout.Flow('horizontal'));
mainPanel.add(leftPanel);分别插入左右面板
mainPanel.add(rightPanel);
ui.root.clear();清空原始地图
ui.root.add(mainPanel);添加新的面板
(本代码仅作Map用法调用练习,非可执行代码,具体代码详见https://zhuanlan.zhihu.com/p/30863659)
二、地图图例生成
为分类图像添加图例,通过自定义颜色列表和说明文字列表,实现图例的构造,图像图层颜色通过Map.addLayer( ClassificationResult, {palette:palette,min:0,max:palette.length-1},“Classification”);实现与图例的统一
function addLegend(palette, names){
var legend = ui.Panel({
style:{
position:'bottom-right',
padding:'5px 10px'
}
});
var title = ui.Label({
value:'Classification',
style:{
fontWeight:'bold',
color:"red",
fontsize:'16px'
}
});
legend.add(title);
var addLegendLabel = function(color,name){
var showColor = ui.Label({
style:{
backgroudColor:'#'+color,
padding:'8px',
margin:'0 0 4px 0'
}
});
var desc = ui.Label({
value:name,
style:{margin:'0 0 4px 8px'}
});
return ui.Panel({
widgets:[showColor, desc],
layout:ui.Panel.Layout.Flow('horizontal')
});
};
for (var i=0; i<palette.length;i++){
var label = addLegendLabel(palette[i],names[i]);
legend.add(label);
}
Map.add(legend);
}
//定义颜色列表和说明列表
var palette = [...]
var names = [...]
addLegend(palette, names);
详见:https://zhuanlan.zhihu.com/p/31186964