<?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 Prevent invalid legend layers (e.g., WebTiledLayer) from being sent to legend widget in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/prevent-invalid-legend-layers-e-g-webtiledlayer/m-p/461541#M42653</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm working off of &lt;/SPAN&gt;&lt;A href="https://developers.arcgis.com/en/javascript/jssamples/widget_legend.html" rel="nofollow noopener noreferrer" target="_blank"&gt;this sample&lt;/A&gt;&lt;SPAN&gt; using the 3.7 API.&amp;nbsp; I added my own FeatureLayer's to the map and the sample ran flawlessly.&amp;nbsp; But whenever I introduce a WebTiledLayer, the feature layers are not added to the map or the legend widget.&amp;nbsp; This makes total sense because WebTiledLayer's don't have a legend.&amp;nbsp; So how do I prevent the invalid layers from being sent to the legend widget?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I understand that the layerInfo variable lists the layers that should be sent to the legend and that only valid layers should be included.&amp;nbsp; I tried several ways to filter out the WebTiledLayer's in the following block, but nothing worked.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add the legend
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.on("layers-add-result", function (evt) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var layerInfo = arrayUtils.map(evt.layers, function (layer, index) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return {layer:layer.layer, title:layer.layer.name};
&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 (layerInfo.length &amp;gt; 0) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var legendDijit = new Legend({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerInfos: layerInfo
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, "legendDiv");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendDijit.startup();
&amp;nbsp;&amp;nbsp;&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;BR /&gt;&lt;SPAN&gt;I tried assigning id's to the FeatureLayers's and then filtering those that don't have a matching id:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt; if ((layer.layer.id == "tracts") || (layer.layer.id == "counties")) {
&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; return { layer: layer.layer, title: layer.layer.name };
&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; }&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;No luck.&amp;nbsp; Ideally, I'd like to check whether or not a layer is a featureLayer and if it's not, exclude it from layerInfo.&amp;nbsp; My final app will have quite a number of featureLayers and I don't want to have to check the ID for all of them.&amp;nbsp; Another potential hitch is that I'll be using a select (html dropdown) element to turn certain featureLayer's on and off via featureLayer.show() and featureLayer.hide().&amp;nbsp; So I'll somehow need to check whether or not a layer is visible and then send it to the legend if it is.&amp;nbsp; I think there's probably no way to do this without checking the layer name/id somehow.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for any suggestions!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 20:31:16 GMT</pubDate>
    <dc:creator>AZendel</dc:creator>
    <dc:date>2021-12-11T20:31:16Z</dc:date>
    <item>
      <title>Prevent invalid legend layers (e.g., WebTiledLayer) from being sent to legend widget</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/prevent-invalid-legend-layers-e-g-webtiledlayer/m-p/461541#M42653</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm working off of &lt;/SPAN&gt;&lt;A href="https://developers.arcgis.com/en/javascript/jssamples/widget_legend.html" rel="nofollow noopener noreferrer" target="_blank"&gt;this sample&lt;/A&gt;&lt;SPAN&gt; using the 3.7 API.&amp;nbsp; I added my own FeatureLayer's to the map and the sample ran flawlessly.&amp;nbsp; But whenever I introduce a WebTiledLayer, the feature layers are not added to the map or the legend widget.&amp;nbsp; This makes total sense because WebTiledLayer's don't have a legend.&amp;nbsp; So how do I prevent the invalid layers from being sent to the legend widget?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I understand that the layerInfo variable lists the layers that should be sent to the legend and that only valid layers should be included.&amp;nbsp; I tried several ways to filter out the WebTiledLayer's in the following block, but nothing worked.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add the legend
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.on("layers-add-result", function (evt) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var layerInfo = arrayUtils.map(evt.layers, function (layer, index) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return {layer:layer.layer, title:layer.layer.name};
&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 (layerInfo.length &amp;gt; 0) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var legendDijit = new Legend({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerInfos: layerInfo
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, "legendDiv");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legendDijit.startup();
&amp;nbsp;&amp;nbsp;&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;BR /&gt;&lt;SPAN&gt;I tried assigning id's to the FeatureLayers's and then filtering those that don't have a matching id:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt; if ((layer.layer.id == "tracts") || (layer.layer.id == "counties")) {
&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; return { layer: layer.layer, title: layer.layer.name };
&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; }&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;No luck.&amp;nbsp; Ideally, I'd like to check whether or not a layer is a featureLayer and if it's not, exclude it from layerInfo.&amp;nbsp; My final app will have quite a number of featureLayers and I don't want to have to check the ID for all of them.&amp;nbsp; Another potential hitch is that I'll be using a select (html dropdown) element to turn certain featureLayer's on and off via featureLayer.show() and featureLayer.hide().&amp;nbsp; So I'll somehow need to check whether or not a layer is visible and then send it to the legend if it is.&amp;nbsp; I think there's probably no way to do this without checking the layer name/id somehow.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for any suggestions!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 20:31:16 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/prevent-invalid-legend-layers-e-g-webtiledlayer/m-p/461541#M42653</guid>
      <dc:creator>AZendel</dc:creator>
      <dc:date>2021-12-11T20:31:16Z</dc:date>
    </item>
    <item>
      <title>Re: Prevent invalid legend layers (e.g., WebTiledLayer) from being sent to legend widget</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/prevent-invalid-legend-layers-e-g-webtiledlayer/m-p/461542#M42654</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've run across the same problem. Rather than handle this in the layers-add-result event, you can build the layerInfos while you are adding the layers to the map.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;First, create an empty array. Then, as you add each layer to the map, if the layer is not a WebTiledLayer, add a layerInfo element to that array. Finally, construct the Legend dijit, passing in your clean array of LayerInfos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ultimately, the lack of legend is a real shortcoming with WebTiledLayers. I'd like to see an alternate Legend dijit that lets me include a legend for my WebTiledLayers, too.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 21 Oct 2014 16:54:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/prevent-invalid-legend-layers-e-g-webtiledlayer/m-p/461542#M42654</guid>
      <dc:creator>deleted-user-Jie3eyjOl9XM</dc:creator>
      <dc:date>2014-10-21T16:54:12Z</dc:date>
    </item>
  </channel>
</rss>

