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 ]);
})
});