Legend with onLayersAddResult

Add a legend to a map

by Alex Azuero

HTML

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.4/dijit/themes/claro/claro.css">
<!doctype html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" />
        <meta charset="utf-8">
        <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
        <title>ArcGIS JavaScript API Fiddle</title>
        <link rel="stylesheet" href="//serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/esri/css/esri.css" />
        <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/dojo/1.7.4/dijit/themes/claro/claro.css" />
        <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.2"></script>
    </head>

    <body class="claro">
        <div id="legendDiv"></div>
        <div data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="gutters:false" id="mapContainer">
            <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'center'" id="map">
            </div>
           
        </div>

    </body>
</html>

CSS

html, body {
    height: 100%;
    width: 100%;
    margin: 0;
    padding: 0;
    font-size: 100% !important; /* fixes IE issue exaggerated text resizing*/
    line-height: 1.4;
}

#mapContainer {
    width: 100%; 
    height: 100%; 
    margin: 0px;
}

#map{
    padding:0;
    overflow: hidden;
    font-size:0.75em !important; /* 16x0.75=12 */ ;

}

JavaScript

require(["dojo/parser", "dojo/ready", "dojo/dom", "dojo/dom-construct", "esri/main", "esri/dijit/Legend", "esri/layers/FeatureLayer", "esri/dijit/Attribution", "dijit/layout/BorderContainer", "dijit/layout/ContentPane"],

function(parser, ready, dom, domConstruct, esri, Legend) {

    ready(function() {

        parser.parse();
        var map = new esri.Map("map");

        var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer");
        
        var legendLayers = [];
        var fireLayer = new esri.layers.ArcGISDynamicMapServiceLayer("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/MapServer", {
            id: 'fire'
        });

        legendLayers.push({layer: fireLayer, title: "Fire"});

        //add the legend
        dojo.connect(map, 'onLayersAddResult', function(results) {
            var legendDijit = new Legend({
                map: map,
                layerInfos: legendLayers
            }, "legendDiv");
            legendDijit.startup();
        });

        map.addLayers([basemap, fireLayer ]);

    })

});