<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Legends for Tiled map services don't display in Print output? in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677917#M63225</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;
&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote" modifiedtitle="true"&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;This is definitely a bug in Esri's code.&lt;/P&gt;
&lt;PRE class="javascript" style="display: none;" width="function(isBody) {         try {             return _getDimension.call(this, isBody, 'width');         } catch (e) {             error(&amp;quot;width&amp;quot;, e);             return false;         }     }"&gt;/**
 * Creates an array of LegendLayers of all layers currently visible in the map.
 * @param {esri.Map} map
 * @returns {esri.tasks.LegendLayer[]}
 */
function getLegendLayersFromMap(map) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var layer, legendLayer, output = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0, l = map.layerIds.length; i &amp;lt; l; i += 1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer = map.getLayer(map.layerIds&lt;I&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (layer.visible &amp;amp;&amp;amp; layer.visibleAtMapScale) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayer = new LegendLayer();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayer.layerId = layer.id;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (layer.visibleLayers) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayer.subLayerIds = layer.visibleLayers;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output.push(legendLayer);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; // Return null if the output array has no elements.
&amp;nbsp;&amp;nbsp;&amp;nbsp; return output.length &amp;gt; 0 ? output : null;
}

// Sample call
var printParameters = new PrintParameters();
printParameters.map = map;
var template = new PrintTemplate();
template.format = "PDF";
// printUI is a custom class in my app that creates and manages the HTML UI for a print task form.
template.layout = printUI.getSelectedTempalteName();
template.layoutOptions = {
&amp;nbsp;&amp;nbsp;&amp;nbsp; authorText:printUI.form.querySelector("input[name=author]").value,
&amp;nbsp;&amp;nbsp;&amp;nbsp; titleText: printUI.form.querySelector("input[name=title]").value,
&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayers: getLegendLayersFromMap(map)
};
printParameters.template = template;

printTask.execute(printParameters);
&lt;/I&gt;&lt;/PRE&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;

&lt;DIV style="display: none;"&gt; &lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;Agreed (somewhat)...a look at _createOperationalLayers in PrintTask.js of v3.9 of the JavaScript API shows a switch for which there is no case for "esri.layers.ArcGISTiledMapService".&amp;nbsp; I think it's only a bug, though, if omitting this type of layer was unintentional.&amp;nbsp; However, I can't think of any good reason as to why they would omit it.&amp;nbsp; Whatever the case, their own documentation is, at minimum, misleading.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 12 Aug 2014 20:44:45 GMT</pubDate>
    <dc:creator>JoelBennett</dc:creator>
    <dc:date>2014-08-12T20:44:45Z</dc:date>
    <item>
      <title>Legends for Tiled map services don't display in Print output?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677910#M63218</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I have downloaded the Basic Viewer template. I am creating my webmap with code (partial listing below).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; webmap.itemData = { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "operationalLayers": [ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Developable Land (display tiled service) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { "url": "http://gis.tpcmaps.org/ArcGIS/rest/services/LandUse/Developable_Land/MapServer", &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "visibility": false, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "opacity": 1, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //"visibleLayers": [], &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //"minScale": 100000, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //"maxScale": 0, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "title": "Developable Land", &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "id": "devland", &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "description": null &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Community-Based Planning Area (display dynamic map service)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { "url": "http://gis.tpcmaps.org/ArcGIS/rest/services/Websites/tpcCPA/MapServer", &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "visibility": false, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "opacity": 0.6, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //"visibleLayers": [], &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //"minScale": 100000, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //"maxScale": 0, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "title": "Community-Based Planning Areas", &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "id": "cpa", &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "description": null &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, &lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have added several operational layers (dynamic and tiled map services hosted on my server). All are being displayed in the map and legend as expected. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The problem is that when I print, the legend for the tiled map services are not being displayed on the print output.&amp;nbsp; I have tested with a single tiled layer with only 1 legend entry, so I know it's not a matter of the legend getting cut off.&amp;nbsp; The tiled service is displayed on the map of the printed output as expected.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's the addPrint function from the Basic Viewer. I commented out the 'legendLayers' setting so the legend will display.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;function addPrint() { &amp;nbsp;&amp;nbsp;&amp;nbsp; var layoutOptions = { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'authorText': configOptions.owner, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'titleText': configOptions.title, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'scalebarUnit': (i18n.viewer.main.scaleBarUnits === 'english') ? 'Miles' : 'Kilometers', &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //'legendLayers': [] //comment out so the legend will display by default, 6/13/13 jms. &amp;nbsp;&amp;nbsp;&amp;nbsp; };&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //TODO - replace default templates with info from service &amp;nbsp;&amp;nbsp;&amp;nbsp; var templates = dojo.map(configOptions.printlayouts, function (layout) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layout.layoutOptions = layoutOptions; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return layout; &amp;nbsp;&amp;nbsp;&amp;nbsp; }); &amp;nbsp;&amp;nbsp;&amp;nbsp; // print dijit &amp;nbsp;&amp;nbsp;&amp;nbsp; var printer = new esri.dijit.Print({ &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map: map, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; templates: templates, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: configOptions.helperServices.printTask.url &amp;nbsp;&amp;nbsp;&amp;nbsp; }, dojo.create('span'));&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.query('.esriPrint').addClass('esriPrint');&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.byId('webmap-toolbar-center').appendChild(printer.printDomNode);&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printer.startup();&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any idea why legends for tiled map services do not print?&amp;nbsp; I am using the ESRI print service, though I wouldn't think that would make a difference.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Joan&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Jun 2013 19:27:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677910#M63218</guid>
      <dc:creator>JoanSteinbacher</dc:creator>
      <dc:date>2013-06-18T19:27:25Z</dc:date>
    </item>
    <item>
      <title>Re: Legends for Tiled map services don't display in Print output?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677911#M63219</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;You have to specify the &lt;/SPAN&gt;&lt;A href="https://developers.arcgis.com/en/javascript/jsapi/legendlayer.html#legendlayer1" rel="nofollow noopener noreferrer" target="_blank"&gt;LegendLayer&lt;/A&gt;&lt;SPAN&gt; for legends to show in the printout. Here is what I changed in the layout.js file for showing my basemap legend(tiled map service) in printout:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;function addPrint() {

 &lt;SPAN style="color:&amp;quot;#FF0000&amp;quot;;"&gt;var legendLayer = new esri.tasks.LegendLayer();
 legendLayer.layerId = "defaultBasemap";&lt;/SPAN&gt;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp; var layoutOptions = {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'authorText': configOptions.owner,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'titleText': configOptions.title,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'scalebarUnit': (i18n.viewer.main.scaleBarUnits === 'english') ? 'Miles' : 'Kilometers',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color:&amp;quot;#FF0000&amp;quot;;"&gt; 'legendLayers': [legendLayer]&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };

&amp;nbsp;&amp;nbsp;&amp;nbsp; //TODO - replace default templates with info from service
&amp;nbsp;&amp;nbsp;&amp;nbsp; var templates = dojo.map(configOptions.printlayouts, function (layout) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layout.layoutOptions = layoutOptions;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return layout;
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
 
&amp;nbsp;&amp;nbsp;&amp;nbsp; // print dijit
&amp;nbsp;&amp;nbsp;&amp;nbsp; var printer = new esri.dijit.Print({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map: map,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; templates: templates,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: configOptions.helperServices.printTask.url
&amp;nbsp;&amp;nbsp;&amp;nbsp; }, dojo.create('span'));

&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.query('.esriPrint').addClass('esriPrint');

&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.byId('webmap-toolbar-center').appendChild(printer.printDomNode);

&amp;nbsp;&amp;nbsp;&amp;nbsp; printer.startup();
}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 04:34:51 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677911#M63219</guid>
      <dc:creator>ShreyasVakil</dc:creator>
      <dc:date>2021-12-12T04:34:51Z</dc:date>
    </item>
    <item>
      <title>Re: Legends for Tiled map services don't display in Print output?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677912#M63220</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks for leading me in the right direction.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;To avoid hardcoding the layer ids for the legend, I've created a global variable 'legendLayers' that gets set in the buildLayerVisibleList function.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;var legendLayers = [];&amp;nbsp; //use the same filtered list created in the 'buildLayerVisibleList' function in the legend dijit, added 5/23/13 jms
function buildLayerVisibleList(layers) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log("--&amp;gt; inside buildLayerVisibleList");
&amp;nbsp;&amp;nbsp;&amp;nbsp; var layerInfos = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.forEach(layers, function (mapLayer, index) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log("mapLayer.title: " + mapLayer.title + ", mapLayer.id: " + mapLayer.id);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //If layer is for viewing popup info only, do not add to layer list. added 5/23/13 jms.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //The id of the layer must start with 'pop' to filter it out.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var isPopupLyr = false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mapLayer.id.substring(0,3) == "pop") { isPopupLyr = true} ;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log("isPopupLyr: " + isPopupLyr);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Only include layers that are not used solely for 'popups', added 5/23/13 jms
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isPopupLyr == false) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mapLayer.featureCollection &amp;amp;&amp;amp; !mapLayer.layerObject) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mapLayer.featureCollection.layers) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add the first layer in the layer collection... not all&amp;nbsp; - when we turn off the layers we'll 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //turn them all off 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mapLayer.featureCollection.layers) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerInfos.push({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "layer": mapLayer,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "visible": mapLayer.visibility,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "title": mapLayer.title
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (mapLayer.layerObject) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerInfos.push({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer: mapLayer.layerObject,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; visible: mapLayer.layerObject.visible,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title: mapLayer.title
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayers = layerInfos; //set global var for use with the legend dijit, added 5/23/13 jms
&amp;nbsp;&amp;nbsp;&amp;nbsp; return layerInfos;
}
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I use the 'legendLayers' global variable in the addPrint function to create the list of layer ids for the legend.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;function addPrint() {
 console.log("--&amp;gt; inside addPrint function"); 
 //legendLayers global var set in the buildLayerVisibleList fn. 
 //Array contains layer object, visible setting, and title.
 console.log("legendLayers.length: " + legendLayers.length); 
 
 //Create array containing the layer objects ids.
 var layerIds = [];
 //Loop thru each layer object and push id into the new array.
 for (var i = 0; i &amp;lt; legendLayers.length; i++) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //var layer = layers&lt;I&gt;;
&amp;nbsp; console.log("legendLayers.layer.id: " + legendLayers&lt;I&gt;.layer.id);
&amp;nbsp; var legendLyr&amp;nbsp; = new esri.tasks.LegendLayer();
&amp;nbsp; legendLyr.layerId = legendLayers&lt;I&gt;.layer.id
&amp;nbsp; layerIds.push(legendLyr);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log("layerIds.length: " + layerIds.length);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp; var layoutOptions = {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'authorText': configOptions.owner,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'titleText': configOptions.title,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'scalebarUnit': (i18n.viewer.main.scaleBarUnits === 'english') ? 'Miles' : 'Kilometers',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //'legendLayers': [] //comment out so the legend will display by default, 6/13/13 jms. But this won't print the legend for tiled services...
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //'legendLayers': [legendLayer]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'legendLayers': layerIds //set to the layer id array
&amp;nbsp;&amp;nbsp;&amp;nbsp; };

&amp;nbsp;&amp;nbsp;&amp;nbsp; //TODO - replace default templates with info from service
&amp;nbsp;&amp;nbsp;&amp;nbsp; var templates = dojo.map(configOptions.printlayouts, function (layout) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layout.layoutOptions = layoutOptions;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return layout;
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; // print dijit
&amp;nbsp;&amp;nbsp;&amp;nbsp; var printer = new esri.dijit.Print({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map: map,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; templates: templates,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url: configOptions.helperServices.printTask.url
&amp;nbsp;&amp;nbsp;&amp;nbsp; }, dojo.create('span'));

&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.query('.esriPrint').addClass('esriPrint');

&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.byId('webmap-toolbar-center').appendChild(printer.printDomNode);

&amp;nbsp;&amp;nbsp;&amp;nbsp; printer.startup();&amp;nbsp; 
}&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In the function 'initUI', I had to move the call to 'addPrint' below the call to 'addLayerList' (which calls 'buildLayerVisibleList') so the global variable was set before addPrint needed it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This approach works, though I have found the following legend print limitations which I'll need to address:&lt;/SPAN&gt;&lt;BR /&gt;&lt;UL&gt; &lt;BR /&gt; &lt;LI&gt;Space allotted for the legend in the out-of-the-box templates is too small&lt;/LI&gt; &lt;BR /&gt; &lt;LI&gt;Layers in the legend don't display the layer's title.&lt;/LI&gt; &lt;BR /&gt;&lt;/UL&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note: In case you're wondering, in the buildLayerVisibleList function, I'm filtering out any map layer that I've added solely for popup functionality, because I have added their corresponding map service so the labels display. Kind of a pain that individual layers won't display labels...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 16:46:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677912#M63220</guid>
      <dc:creator>JoanSteinbacher</dc:creator>
      <dc:date>2021-12-12T16:46:42Z</dc:date>
    </item>
    <item>
      <title>Re: Legends for Tiled map services don't display in Print output?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677913#M63221</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Thanks for leading me in the right direction.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The code I posted was just a proof of concept, just to demonstrate how to add the legends.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am glad you found a good solution to dynamically create a list of layer ids!!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It would be great if you could mark this as answer, might help other.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Shreyas&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Jun 2013 19:08:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677913#M63221</guid>
      <dc:creator>ShreyasVakil</dc:creator>
      <dc:date>2013-06-19T19:08:01Z</dc:date>
    </item>
    <item>
      <title>Re: Legends for Tiled map services don't display in Print output?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677914#M63222</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I would love to -- but how do I do that?&amp;nbsp; Sorry, the obvious things evade me sometimes...&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Jun 2013 19:17:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677914#M63222</guid>
      <dc:creator>JoanSteinbacher</dc:creator>
      <dc:date>2013-06-19T19:17:46Z</dc:date>
    </item>
    <item>
      <title>Re: Legends for Tiled map services don't display in Print output?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677915#M63223</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;I would love to -- but how do I do that?&amp;nbsp; Sorry, the obvious things evade me sometimes...&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Please see the attached image.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]25376[/ATTACH]&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Jun 2013 19:22:10 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677915#M63223</guid>
      <dc:creator>ShreyasVakil</dc:creator>
      <dc:date>2013-06-19T19:22:10Z</dc:date>
    </item>
    <item>
      <title>Re: Legends for Tiled map services don't display in Print output?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677916#M63224</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is definitely a bug in Esri's code. According to the &lt;A href="https://developers.arcgis.com/javascript/jsapi/printtemplate-amd.html#layoutoptions"&gt;documentation&lt;/A&gt;:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;If legendLayers is not specified, all operational layers will be present in the legend.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I recently encountered this problem and came up with this function to createLegend Layers.&lt;/P&gt;&lt;PRE __default_attr="javascript" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_1405531142306364" jivemacro_uid="_1405531142306364" modifiedtitle="true"&gt;
&lt;P&gt;/**&lt;/P&gt;
&lt;P&gt; * Creates an array of LegendLayers of all layers currently visible in the map.&lt;/P&gt;
&lt;P&gt; * @param {esri.Map} map&lt;/P&gt;
&lt;P&gt; * @returns {esri.tasks.LegendLayer[]}&lt;/P&gt;
&lt;P&gt; */&lt;/P&gt;
&lt;P&gt;function getLegendLayersFromMap(map) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var layer, legendLayer, output = [];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0, l = map.layerIds.length; i &amp;lt; l; i += 1) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer = map.getLayer(map.layerIds&lt;I&gt;);&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (layer.visible &amp;amp;&amp;amp; layer.visibleAtMapScale) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayer = new LegendLayer();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayer.layerId = layer.id;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (layer.visibleLayers) {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayer.subLayerIds = layer.visibleLayers;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output.push(legendLayer);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Return null if the output array has no elements.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return output.length &amp;gt; 0 ? output : null;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;// Sample call&lt;/P&gt;
&lt;P&gt;var printParameters = new PrintParameters();&lt;/P&gt;
&lt;P&gt;printParameters.map = map;&lt;/P&gt;
&lt;P&gt;var template = new PrintTemplate();&lt;/P&gt;
&lt;P&gt;template.format = "PDF";&lt;/P&gt;
&lt;P&gt;// printUI is a custom class in my app that creates and manages the HTML UI for a print task form.&lt;/P&gt;
&lt;P&gt;template.layout = printUI.getSelectedTempalteName();&lt;/P&gt;
&lt;P&gt;template.layoutOptions = {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; authorText:printUI.form.querySelector("input[name=author]").value,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; titleText: printUI.form.querySelector("input[name=title]").value,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayers: getLegendLayersFromMap(map)&lt;/P&gt;
&lt;P&gt;};&lt;/P&gt;
&lt;P&gt;printParameters.template = template;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;printTask.execute(printParameters);&lt;/P&gt;
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Jul 2014 17:27:14 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677916#M63224</guid>
      <dc:creator>JeffJacobson</dc:creator>
      <dc:date>2014-07-16T17:27:14Z</dc:date>
    </item>
    <item>
      <title>Re: Legends for Tiled map services don't display in Print output?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677917#M63225</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;
&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote" modifiedtitle="true"&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;This is definitely a bug in Esri's code.&lt;/P&gt;
&lt;PRE class="javascript" style="display: none;" width="function(isBody) {         try {             return _getDimension.call(this, isBody, 'width');         } catch (e) {             error(&amp;quot;width&amp;quot;, e);             return false;         }     }"&gt;/**
 * Creates an array of LegendLayers of all layers currently visible in the map.
 * @param {esri.Map} map
 * @returns {esri.tasks.LegendLayer[]}
 */
function getLegendLayersFromMap(map) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var layer, legendLayer, output = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0, l = map.layerIds.length; i &amp;lt; l; i += 1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer = map.getLayer(map.layerIds&lt;I&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (layer.visible &amp;amp;&amp;amp; layer.visibleAtMapScale) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayer = new LegendLayer();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayer.layerId = layer.id;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (layer.visibleLayers) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayer.subLayerIds = layer.visibleLayers;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output.push(legendLayer);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }

&amp;nbsp;&amp;nbsp;&amp;nbsp; // Return null if the output array has no elements.
&amp;nbsp;&amp;nbsp;&amp;nbsp; return output.length &amp;gt; 0 ? output : null;
}

// Sample call
var printParameters = new PrintParameters();
printParameters.map = map;
var template = new PrintTemplate();
template.format = "PDF";
// printUI is a custom class in my app that creates and manages the HTML UI for a print task form.
template.layout = printUI.getSelectedTempalteName();
template.layoutOptions = {
&amp;nbsp;&amp;nbsp;&amp;nbsp; authorText:printUI.form.querySelector("input[name=author]").value,
&amp;nbsp;&amp;nbsp;&amp;nbsp; titleText: printUI.form.querySelector("input[name=title]").value,
&amp;nbsp;&amp;nbsp;&amp;nbsp; legendLayers: getLegendLayersFromMap(map)
};
printParameters.template = template;

printTask.execute(printParameters);
&lt;/I&gt;&lt;/PRE&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;

&lt;DIV style="display: none;"&gt; &lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;Agreed (somewhat)...a look at _createOperationalLayers in PrintTask.js of v3.9 of the JavaScript API shows a switch for which there is no case for "esri.layers.ArcGISTiledMapService".&amp;nbsp; I think it's only a bug, though, if omitting this type of layer was unintentional.&amp;nbsp; However, I can't think of any good reason as to why they would omit it.&amp;nbsp; Whatever the case, their own documentation is, at minimum, misleading.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 12 Aug 2014 20:44:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677917#M63225</guid>
      <dc:creator>JoelBennett</dc:creator>
      <dc:date>2014-08-12T20:44:45Z</dc:date>
    </item>
    <item>
      <title>Re: Legends for Tiled map services don't display in Print output?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677918#M63226</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I don't know if you had success with this, but were you able to have the legend appear in more than 1 column inside your print template? I have my map being printed to the custom template I made and the legend is also appearing but the problem is that it appears as 1 column and goes behind the map. I'd like to make it a 2 or 3 column legend so it spreads width-wise.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Alexei&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Sep 2014 23:11:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/legends-for-tiled-map-services-don-t-display-in/m-p/677918#M63226</guid>
      <dc:creator>AlexeiB</dc:creator>
      <dc:date>2014-09-25T23:11:58Z</dc:date>
    </item>
  </channel>
</rss>

