LabelLayer using feature layer called via CreateMap?

238
0
11-04-2013 07:07 AM
BenAller
New Contributor III
Does anyone know if there's a way to label feature layers that are called through the arcgisUtils.CreateMap method? Perhaps there's a way to get at the operational layers in the webmap to build label layers without having to use map.addLayer for each feature layer I wish to label?    My test page seems overkill in that it's calling the same layer through both the CreateMap and through map.addLayer.  I'd like to leverage all the settings saved within my webmap, and guess I'm looking for the most efficient way of creating the labels. 

Thanks,
Ben

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=7, IE=9, IE=10">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
    <title></title>
    <link rel="stylesheet" href="https://community.esri.com//js.arcgis.com/3.7/js/esri/css/esri.css">
    <style>
      html, body, #map {
        height: 100%; width: 100%; margin: 0; padding: 0; 
      }
    </style>

    <script src="//js.arcgis.com/3.7/"></script>
    <script>
      var map;

      require([
        "esri/map",
        "esri/arcgis/utils",
        "esri/geometry/Extent",
        "esri/layers/FeatureLayer",
        "esri/symbols/SimpleLineSymbol",
        "esri/symbols/SimpleFillSymbol",
        "esri/symbols/TextSymbol",
        "esri/renderers/SimpleRenderer",
        "esri/renderers/ScaleDependentRenderer",
        "esri/layers/LabelLayer",
        "dojo/_base/Color",
        "dojo/domReady!"
      ], function(Map, arcgisUtils, Extent, FeatureLayer, SimpleLineSymbol, SimpleFillSymbol, TextSymbol, SimpleRenderer, ScaleDependentRenderer, LabelLayer, Color) 
        {
          arcgisUtils.createMap("a04f0acc513e4f8d94f008d2937bf9ab", "map").then(function(response) {
          map = response.map;
          

          // create a renderer for the monitoring wells layer to override default symbology
          var MonwellColor = new Color("#666");
          //var MonwellLine = new SimpleLineSymbol("solid", MonwellColor, 1.5);
          //var MonwellSymbol = new SimpleFillSymbol("solid", MonwellLine, null);
          //var MonwellRenderer = new SimpleRenderer(MonwellSymbol);
          var Monwell = new esri.layers.FeatureLayer(
            "http://services.arcgis.com/G4S1dGvn7PIgYd6Y/arcgis/rest/services/MonitoringWells/FeatureServer/0",
            {
              mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
              outFields: ["PERMITID"]
            }
           );
          
          map.addLayer(Monwell);

          // create a text symbol to define the style of labels
          var MonwellLabel = new TextSymbol().setColor(MonwellColor);
          MonwellLabel.font.setSize("9pt");
          MonwellLabel.font.setFamily("verdana");
          MonwellLabelRenderer = new SimpleRenderer(MonwellLabel);

          // scale dependent renderer for city labels
          var MonwellScaleDependent = new ScaleDependentRenderer({
              rendererInfos: [{
                  renderer: MonwellLabelRenderer,
                  minScale: 10000,
                  maxScale: 1
                }]
              })
              var labels = new LabelLayer({ id: "labels" });
              // tell the label layer to label the monitoring wells feature layer
              labels.addFeatureLayer(Monwell, MonwellScaleDependent, "${PERMITID}");
              // add the label layer to the map
              map.addLayer(labels);
          });
      });
    </script>
  </head>
  <body>
    <div id="map"></div>
  </body>
</html>
0 Kudos
0 Replies