Display CSVLayer in Legend?

996
2
Jump to solution
11-19-2016 08:44 AM
TaylorTeske2
New Contributor II

So I am new to JavaScript and the API. I have everything working in my code, except that the features of my CSVLayer will not show up in my legend. Any ideas on how to do this? The code is below:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
  <title>Homework 5</title>
  
  <link rel="stylesheet" href="https://js.arcgis.com/4.1/esri/css/main.css">
  <script src="https://js.arcgis.com/4.1/"></script>

  <style>
    html,
    body,
    #viewDiv {
      padding: 0;
      margin: 0;
      height: 98%;
      width: 98%;
    }
    
    #legendDiv {
      max-width: 300px;
      background-color: black;
      padding: 8px;
      color: white;
      opacity: 0.85;
    }
    
    p {
      max-width: 200px;
      background-color: black;
      padding: 15px;
      border: 1px solid white;
      color: white;
      opacity: .75;
    }
    
    h1 {
      background-color:#D8E0E2;
      background-repeat:repeat-x;
      border-bottom:1px solid #000000;
      border-top:1px solid #000000;
      color: black;
      font-family: Verdana,Arial,Helvetica,sans-serif;
      font-size: 16px;
      font-weight: bold;
      letter-spacing:1.1px;
      margin: 15px 0 10px;
      padding: 3px 10px;
      text-align: center;
    }
    
  </style>



  <script>
    require([
      "esri/Map",
      "esri/layers/CSVLayer",
      "esri/views/MapView",
      "esri/renderers/UniqueValueRenderer",
      "esri/symbols/SimpleMarkerSymbol",
      "esri/config",
      "esri/core/urlUtils",
      "esri/widgets/Legend",
      "dojo/dom-construct",
      "dojo/domReady!"
    ], function(
      Map,
      CSVLayer,
      MapView,
      UniqueValueRenderer,
      SimpleMarkerSymbol,
      esriConfig,
      urlUtils,
      Legend,
      domConstruct) {
      
      var url = "http://opendata.dc.gov/datasets/4ac321b2d409438ebd76a6569ad94034_5.csv";

      
      esriConfig.request.corsEnabledServers.push(url);
      
//      urlUtils.addProxyRule({
//        urlPrefix: "opendata.dc.gov",
//        proxyUrl: "/sproxy/"
//      });
      
      
      var defaultSym = new SimpleMarkerSymbol({
          color: "white",
          size: "8px"
      });

      var elem = new SimpleMarkerSymbol({
          color: "blue",
          size: "12px"
      });

      var middle = new SimpleMarkerSymbol({
          color: "green",
          size: "16px"
      });

      var high = new SimpleMarkerSymbol({
          color: "red",
          size: "20px"
      });

      var renderer = new UniqueValueRenderer({
        defaultSymbol: defaultSym,
        defaultLabel: "Special",
        field: "LEVEL_",
        uniqueValueInfos: [
          {
            value: "ES",
            symbol: elem,
            label: "Elementary School"
          },
          {
            value: "MS",
            symbol: middle,
            label: "Middle School"
          },
          {
            value: "HS",
            symbol: high,
            label: "High School"
          }]
        });
      
      var csvLayer = new CSVLayer({
        url: url,
        renderer: renderer,
        longitudeField: "LONGITUDE",
        latitudeField: "LATITUDE"
      });       

      var map = new Map({
        basemap: "dark-gray",
        layers: [csvLayer]
      });

      var view = new MapView({
        container: "viewDiv",
        center: [-77.029681, 38.908349],
        zoom: 12,
        map: map
      });

      var legend = new Legend({
          view: view,
          layerInfos: [{
              layer: csvLayer,
              title: "Public Schools"
            }]
        }, "legendDiv");
      
      view.ui.add(legend, "bottom-right");
      
      var info = domConstruct.create("infoDiv", {
        innerHTML: "<p>This map depicts all of the public schools in Washington, DC by type.</p>",
      });
      
      view.ui.add(info, "top-right");

    });
  </script>
</head>

<body>
<h1>DC Public Schools</h1>
  <div id="viewDiv"></div>
  <div id="legendDiv"></div>
</body>

</html>
0 Kudos
1 Solution

Accepted Solutions
RobertScheitlin__GISP
MVP Emeritus

Taylor,

Unfortunately this is a known limitation with the Legend widget at 4.1

Known Limitations

View solution in original post

2 Replies
RobertScheitlin__GISP
MVP Emeritus

Taylor,

Unfortunately this is a known limitation with the Legend widget at 4.1

Known Limitations

TaylorTeske2
New Contributor II

Robert,

Thanks for the help! Probably should have checked the documentation more thoroughly.

0 Kudos