1

这是我的代码

else if(which == "abc"){  
        var d = (id).toString();  
        d = d.replace("abc", "");  
        query.where = "Name='" + d + "'";  
        console.info(query.where);  
        query.returnGeometry = true;  
        layerC.selectFeatures(query, FeatureLayer.SELECTION_NEW, function (features) {  
          thePoly = features[0].geometry;  
          theExtent = thePoly.getExtent().expand(1); //Zoom out slightly from the polygon's extent  
          map.setExtent(theExtent);  
        }); 

    }
     var text;
     var R = document.getElementById('abc').value;
     var rLyrToggle = dom.byId("rLyr");

     switch(Cpt) {
case "room1":
    on(rLyrToggle, "change", function() {
      building layer.visible = rLyrToggle.checked;

    });
    break;

default:
    text = "No room";
}

我的复选框在检查图层已添加到地图时不显示图层,但我禁用了它的可见性,我希望当组合框选择的值等于案例 1 时,当用户选中该框时,该功能是可见的

4

1 回答 1

2

好吧,要从 GIS 图层中找到所有值(如评论中所述),我建议使用queryTask而不是esriRequest-

以下是工作代码-

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
    <title>Query State Info without Map</title>

    <script src="https://js.arcgis.com/3.20/"></script>
    <script>
      require([
        "dojo/dom", "dojo/on",
        "esri/tasks/query", "esri/tasks/QueryTask", "dojo/domReady!"
      ], function (dom, on, Query, QueryTask) {

        var queryTask = new QueryTask("https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5");

        var query = new Query();
        query.returnGeometry = false;
        query.outFields = [
          "SQMI", "STATE_NAME", "STATE_FIPS", "SUB_REGION", "STATE_ABBR",
          "POP2000", "POP2007", "POP00_SQMI", "POP07_SQMI", "HOUSEHOLDS",
          "MALES", "FEMALES", "WHITE", "BLACK", "AMERI_ES", "ASIAN", "OTHER",
          "HISPANIC", "AGE_UNDER5", "AGE_5_17", "AGE_18_21", "AGE_22_29",
          "AGE_30_39", "AGE_40_49", "AGE_50_64", "AGE_65_UP"
        ];

        on(dom.byId("execute"), "click", execute);
        on(dom.byId("findAll"), "click", findAll);

        function execute () {
          query.where = "";
          query.text = dom.byId("stateName").value;
          queryTask.execute(query, showResults);
        }
        
        function findAll () {
          query.where = "1=1";
          queryTask.execute(query, showResults);
        }

        function showResults (results) {
          var resultItems = [];
          var resultCount = results.features.length;
          for (var i = 0; i < resultCount; i++) {
            var featureAttributes = results.features[i].attributes;
            for (var attr in featureAttributes) {
              resultItems.push("<b>" + attr + ":</b>  " + featureAttributes[attr] + "<br>");
            }
            resultItems.push("<br>");
          }
          dom.byId("info").innerHTML = resultItems.join("");
        }
      });
    </script>
  </head>

  <body>
    US state name :
    <input type="text" id="stateName" value="California">
    <input id="execute" type="button" value="Get Details">
     OR
    <input id="findAll" type="button" value="Find All">
    <br />
    <br />
    <div id="info" style="padding:5px; margin:5px; background-color:#eee;">
    </div>
  </body>
</html>

希望这会帮助你:)

于 2017-04-24T12:24:40.917 回答