これは、dijit を使用してチェックボックス付きのドロップダウン メニューを作成する方法です。
layerList.reverse();
var menu = new dijit.Menu({
id : 'layerMenu'
});
dojo.forEach(layerList, function(layer) {
menu.addChild(new dijit.CheckedMenuItem({
label : layer.title,
id : layer.title.replace(" ",""),
checked : layer.visible,
onChange : function(evt) {
if (layer.layer.featureCollection) {
//turn off all the layers in the feature collection even
//though only the main layer is listed in the layer list
dojo.forEach(layer.layer.featureCollection.layers, function(layer) {
layer.layerObject.setVisibility(!layer.layerObject.visible);
});
} else {
layer.layer.setVisibility(!layer.layer.visible);
}
}
}));
});
var button = new dijit.form.DropDownButton({
label : i18n.tools.layers.label,
id : "layerBtn",
iconClass : "esriLayerIcon",
title : i18n.tools.layers.title,
dropDown : menu
});
dojo.byId('webmap-toolbar-center').appendChild(button.domNode);
ID を知っているため、onChange イベントが発生したときに実行時に個々の dijit.CheckedMenuItem にアクセスできます。dijit には MenuItem の RadioButton がないため、実行時にチェック済みのステータスを変更する方法はありますか。「this.Id」と「evt」を使用して、ユーザーがどちらをチェック/チェック解除しているかを知ることができます。技術的には、ラジオ ボタンの動作をシミュレートするために、必要に応じて他のチェック項目をオフにすることができます。
実行時に dijit.CheckedMenuItem をチェック/チェック解除する方法を教えてもらえますか? どのプロパティと関数を呼び出す必要がありますか?