javascript - dojo 复选框对象和 ArcGIS JS api

标签 javascript dojo arcgis

我还有另一个问题,也许有人可以帮我解决。我正在尝试遵循示例代码 HERE .

我正在尝试将代码合并到我拥有的更大的脚本中——除了复选框不出现之外,一切正常。

这是我的代码:

<script>
require([
"esri/map", 
"esri/dijit/HomeButton",
"esri/layers/FeatureLayer", 
"esri/dijit/Legend", 
"dojo/_base/array", 
"dojo/parser", 
"dijit/layout/BorderContainer", 
"dijit/layout/ContentPane", 
"dijit/layout/AccordionContainer", 
"dojo/domReady!"
], function(Map, HomeButton, FeatureLayer, Legend, arrayUtils, parser){

parser.parse();

var map = new Map("map", {
    basemap: "streets",
    center: [-87.702733, 41.998508],
    zoom: 15
});

var home = new HomeButton({
            map: map
        }, "HomeButton");
        home.startup();

var junctions = new FeatureLayer("http://54.243.188.50:6080/arcgis/rest/services/TYLIN/Streetlights_Pilot/MapServer/0", {
    mode: FeatureLayer.MODE_ONDEMAND,
    outFields: ["*"]
});

 var power = new FeatureLayer("http://54.243.188.50:6080/arcgis/rest/services/TYLIN/Streetlights_Pilot/MapServer/1", {
    mode: FeatureLayer.MODE_ONDEMAND,
    outFields: ["*"]
});

var cityNorth = new FeatureLayer("http://54.243.188.50:6080/arcgis/rest/services/TYLIN/Streetlights_Pilot/MapServer/2", {
    mode: FeatureLayer.MODE_ONDEMAND,
    outFields: ["*"]
});

var citySouth = new FeatureLayer("http://54.243.188.50:6080/arcgis/rest/services/TYLIN/Streetlights_Pilot/MapServer/3", {
    mode: FeatureLayer.MODE_ONDEMAND,
    outFields: ["*"]
});

var controllers = new FeatureLayer("http://54.243.188.50:6080/arcgis/rest/services/TYLIN/Streetlights_Pilot/MapServer/4", {
    mode: FeatureLayer.MODE_ONDEMAND,
    outFields: ["*"]
});

var circuits = new FeatureLayer("http://54.243.188.50:6080/arcgis/rest/services/TYLIN/Streetlights_Pilot/MapServer/6", {
    mode: FeatureLayer.MODE_ONDEMAND,
    outFields: ["*"]
});

var elec = new FeatureLayer("http://54.243.188.50:6080/arcgis/rest/services/TYLIN/Streetlights_Pilot/MapServer/8", {
    mode: FeatureLayer.MODE_ONDEMAND,
    outFields: ["*"]
});

var cityBoundary = new FeatureLayer("http://54.243.188.50:6080/arcgis/rest/services/TYLIN/Streetlights_Pilot/MapServer/9", {
    mode: FeatureLayer.MODE_ONDEMAND,
    outFields: ["*"]
});

var curbs = new FeatureLayer("http://54.243.188.50:6080/arcgis/rest/services/TYLIN/Streetlights_Pilot/MapServer/10", {
    mode: FeatureLayer.MODE_ONDEMAND,
    outFields: ["*"]
});


map.on("layers-add-result", function (evt) {
    var layerInfo = arrayUtils.map(evt.layers, function (layer, index) {
      return {layer:layer.layer, title:layer.layer.name};
    });
    if (layerInfo.length > 0) {
      var legendDijit = new Legend({
        map: map,
        layerInfos: layerInfo
      }, "legendDiv");
      legendDijit.startup();
    }
});

map.on("layers-add-result", function(evt){
    var layerInfo = arrayUtils.map(evt.layers, function(layer, index){
        return {
            layer: layer.layer,
            title: layer.layer.name
        };
    });
    dojo.forEach(layerInfo, function(layer){
        var layerName = layer.title;
        var checkBox = new dijit.form.CheckBox({
            name: "checkBox" + layer.layer.id,
            value: layer.layer.id,
            checked: layer.layer.visible,
            onChange: function(evt){
                var clayer = map.getLayer(this.value);
                clayer.setVisibility(!clayer.visible);
                this.checked = clayer.visible;
            }});
        dojo.place(checkBox.domNode, dojo.byID("toggle"), "after");
        var checkLabel = dojo.create('label', {
            'for': checkbox.name,
            innerHTML: layerName
        }, checkBox.domNode, "after");
        dojo.place("<br />", checkLabel, "after");
    });
});


map.addLayers([junctions, power, cityNorth, citySouth, controllers, circuits, elec, cityBoundary, curbs]);

 });

</script>

最佳答案

尝试将 dijit/form/CheckBox 添加到您的 require 语句中。

关于javascript - dojo 复选框对象和 ArcGIS JS api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309614/

相关文章:

mysql - 带 Cast 或 Convert 的 SQLWhere 子句不起作用

javascript - twitter-bootstrap 模式确认对话框

javascript - 在 Dojo 中的现有 div 中创建 <p> 元素

javascript - 自定义 Polymer 组件之间没有通信

javascript - ENTER 按键事件不起作用 dojo 1.10

javascript - 如何使用 dijit/form/Select 更改网页上显示的 map ?

python - Pandas:将 dbf 表转换为数据框

python - GIS:何时以及为何使用 ArcObjects 而不是 GDAL 编程来处理 ArcGIS 栅格和矢量?

javascript - clearInterval() 不会停止 setInterval() - Firefox 扩展开发

javascript - 取消选中通过 POST[] 的 Echo 检查的复选框