<?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: dynamically created layers not usuable for layer commands in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331308#M30608</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Ben,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I love what you've created, and yes that' exactly what i'm going for.&amp;nbsp; I'll dig through your code a bit more to work on implementing it vs what I have.&amp;nbsp; So my problem lies in not being able to manipulate the layer after its created (dynamically).&amp;nbsp; You may have solved this in your code based on how your creating each layer.&amp;nbsp; I'll have a go with this and get back to you, your seperate config.js sheet is a cleaner way for app maintenance which is the ultimate goal of my app as well.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is the click function that I'm using to look through the layers and toggle visibility(main goal). I find it a bit quicker to create an array and manipulate it during layer resume/suspend and use that for referencing if the layer is in the map vs calling the esri method. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;var setChkBox = function(lyr, layerName) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; "use strict";
&amp;nbsp;&amp;nbsp; if(lyrIDs.indexOf(lyr) &amp;gt; 1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerName.suspend();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyrIDs.splice(lyrIDs.indexOf(lyr), 1);
&amp;nbsp;&amp;nbsp; } else if (!(lyrIDs.hasOwnProperty(lyr))) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyrIDs.push(lyr);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerName.resume();
&amp;nbsp;&amp;nbsp; }
};&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 15:41:07 GMT</pubDate>
    <dc:creator>NigelAlford</dc:creator>
    <dc:date>2021-12-11T15:41:07Z</dc:date>
    <item>
      <title>dynamically created layers not usuable for layer commands</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331304#M30604</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm building layers dynamically and this is working great but I don't seem to be leveraging the api properly.&amp;nbsp; The layers are being built at runtime properly but I can't attach to them after the page is loaded, which leads me to believe that their creation is not seen by the API, but I'm unsure of how to solve this.&amp;nbsp; My first thought is to use the **new** keyword to instantiate the object but I can't get that working.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The code below is what is actually generating new objects from the GIS api, 'makeid()' is a function that creates a unique string from uppercase/lowercase letters and numbers.&amp;nbsp; I call this function for every new layer I want to add, the variable creation is where I think I'm off but I'm not sure.....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var setTiledLayer = function(URL) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var tuID = makeid();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tuID = new esri.layers.ArcGISTiledMapServiceLayer(URL, {id: tuID + 'ID'});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return tuID;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Jun 2013 20:09:48 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331304#M30604</guid>
      <dc:creator>NigelAlford</dc:creator>
      <dc:date>2013-06-11T20:09:48Z</dc:date>
    </item>
    <item>
      <title>Re: dynamically created layers not usuable for layer commands</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331305#M30605</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;You are using the same variable for two different things.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var setTiledLayer = function(URL) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var tuID = makeid(); //here tuID is whatever makeid() returns
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //now tuID is is the layer object
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tuID = new esri.layers.ArcGISTiledMapServiceLayer(URL, {id: tuID + 'ID'}); //you are trying to use an object for part of the string "id"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return tuID; //this should throw an error - are you watching this in firebug?
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Try this.&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; var setTiledLayer = function(URL) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var tuID = makeid();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var layer = new esri.layers.ArcGISTiledMapServiceLayer(URL, {id: tuID + 'ID'});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return layer;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:40:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331305#M30605</guid>
      <dc:creator>BenFousek</dc:creator>
      <dc:date>2021-12-11T15:40:59Z</dc:date>
    </item>
    <item>
      <title>Re: dynamically created layers not usuable for layer commands</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331306#M30606</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks, I finally figured out that the function was creating an object around tuID.&amp;nbsp; I rewrote this because ultimately I'm having runtime issues, ESRI won't attach to these dynamically generated items.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've created a solution but now I'm stuck on how to talk to the object, which if I use the console I can see all the attached ESRI functionality.&amp;nbsp; I dont' know how to retrieve the nested object dynamically, every way I'm currently trying keeps returning the object vs the name itself.&amp;nbsp; &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; var lyrHldr = {};

&amp;nbsp;&amp;nbsp;&amp;nbsp; var setTiledLayer = function(URL, lyrNm) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var temp = makeid();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyrHldr[temp] = new esri.layers.ArcGISTiledMapServiceLayer(URL, {id: lyrNm});
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return lyrHldr[temp];
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:41:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331306#M30606</guid>
      <dc:creator>NigelAlford</dc:creator>
      <dc:date>2021-12-11T15:41:02Z</dc:date>
    </item>
    <item>
      <title>Re: dynamically created layers not usuable for layer commands</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331307#M30607</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I don't know if I totally have my head wrapped around what you are trying to do. I get the feeling you are trying to load layers dynamically on application load using custom parameters.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I start with an object containing the info I need to create the layer plus added functionality, either by making a server call that returns the object in json or a javascript object in a config .js file. Here's an example of the latter:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;var config = {
&amp;nbsp;&amp;nbsp;&amp;nbsp; layersMapService: [
&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://www.sample.com/arcgis/rest/services/some_layer/MapServer', //url
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type: 'dynamic', //type (dynamic or tiled)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name: 'Some Layer', //name as shown in toc and elsewhere
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: 'somelayer', //id must be unique
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; visible: false, //initial visibility
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opacity: 1, //initial opacity
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageFormat: 'png32', //image format
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dpi: 96, //dpi
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legend: true, //legend in toc and map
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identify: false, //is layer available in identify widget
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyLayers: [], //which layers
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query: false, //is layer available in query widget
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queryLayers: [] //which 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; url: 'http://www.sample.com/arcgis/rest/services/another_layer/MapServer',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type: 'dynamic',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name: 'Another Layer',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: 'anotherlayer',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; visible: false,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opacity: 0.5,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageFormat: 'png32',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dpi: 96,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; legend: true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identify: true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyLayers: [0,1,6],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query: true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queryLayers: [0,1,3,4,5,6]
&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;Then during your initialization function, after initializing your map iterate through the config.layersMapService object to add them to the map:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;var app = {
&amp;nbsp;&amp;nbsp;&amp;nbsp; build: function() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //build viewer, load mods, etc
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //map
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; app.map = new esri.Map('map', {});

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add layers
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.forEach(config.layersMapService, app.layers.add.ms);

&amp;nbsp;&amp;nbsp;&amp;nbsp; },
&amp;nbsp;&amp;nbsp;&amp;nbsp; layers: {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add: {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ms: function(l) {
&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; //l is the object with all the params
&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 (l.type === 'dynamic') {
&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; var imageParameters = new esri.layers.ImageParameters();
&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; imageParameters.format = l.imageFormat;
&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; imageParameters.dpi = l.dpi;
&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; var layer = new esri.layers.ArcGISDynamicMapServiceLayer(url, {
&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; id: l.id,
&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; imageParameters: imageParameters,
&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: l.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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opacity: l.opacity
&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; //because the layer is an object I add the params object
&amp;nbsp; //directly to the layer object in case I want them
&amp;nbsp; //again for some other functionality
&amp;nbsp; //
&amp;nbsp; //this is an important concept to really leverage the api
&amp;nbsp; //
&amp;nbsp; //for example: when the query widget gets the json object
&amp;nbsp; //back from the server for each map service layer that information
&amp;nbsp; //(fields, domains, etc) will be stored as an object in the
&amp;nbsp; //corresponding layerIds object
&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.layer_params = l;

&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; app.map.addLayer(layer);

&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; //this is the time to do all the extra things
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //while we have the layer variable
&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; app.toc.add(layer, l.legend);

&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; if (l.identify) {
&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; app.identify.add(layer, l.identifyLayers)
&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; if (l.query) {
&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; app.query.add(layer, l.queryLayers)
&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 (l.type === 'tiled') {
&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; //add tiled layer
&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; }
};&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Don't know if this is what you're looking for, but hope it helps.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;PS: you'll have to clean up the 2nd piece of code; it wouldn't hold the indents for some reason.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:41:04 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331307#M30607</guid>
      <dc:creator>BenFousek</dc:creator>
      <dc:date>2021-12-11T15:41:04Z</dc:date>
    </item>
    <item>
      <title>Re: dynamically created layers not usuable for layer commands</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331308#M30608</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Ben,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I love what you've created, and yes that' exactly what i'm going for.&amp;nbsp; I'll dig through your code a bit more to work on implementing it vs what I have.&amp;nbsp; So my problem lies in not being able to manipulate the layer after its created (dynamically).&amp;nbsp; You may have solved this in your code based on how your creating each layer.&amp;nbsp; I'll have a go with this and get back to you, your seperate config.js sheet is a cleaner way for app maintenance which is the ultimate goal of my app as well.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is the click function that I'm using to look through the layers and toggle visibility(main goal). I find it a bit quicker to create an array and manipulate it during layer resume/suspend and use that for referencing if the layer is in the map vs calling the esri method. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;var setChkBox = function(lyr, layerName) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; "use strict";
&amp;nbsp;&amp;nbsp; if(lyrIDs.indexOf(lyr) &amp;gt; 1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerName.suspend();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyrIDs.splice(lyrIDs.indexOf(lyr), 1);
&amp;nbsp;&amp;nbsp; } else if (!(lyrIDs.hasOwnProperty(lyr))) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lyrIDs.push(lyr);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layerName.resume();
&amp;nbsp;&amp;nbsp; }
};&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:41:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331308#M30608</guid>
      <dc:creator>NigelAlford</dc:creator>
      <dc:date>2021-12-11T15:41:07Z</dc:date>
    </item>
    <item>
      <title>Re: dynamically created layers not usuable for layer commands</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331309#M30609</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Glad to help. Couple of things:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1) Keep in mind that the esri api is simply an extension of the dojo api. I spend way more time working with dojo than with the esri api. If you want to build powerful, high functioning apps, you &lt;/SPAN&gt;&lt;STRONG&gt;must&lt;/STRONG&gt;&lt;SPAN&gt; know dojo.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2) I mentioned adding your own objects to existing objects. When doing this you need to make sure the class doesn't use the same name. When 3.0 was released I ran into problems because the api added new objects and functions to classes with names I was using for objects and functions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;3) You can create your controls in the same function as you create the layer. The snippet I shared sends the layer object to a toc widget which adds the controls, menus, etc, but it's easily done with some simple dojo.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Suppose we have a region and we want add simple layer toggle controls to it:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[HTML]&amp;lt;div id="left" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'left'"&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/div&amp;gt;[/HTML]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In that same function (truncated for ease of reading) we build a control, place it and add layer toggle functionality to the checkbox:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;ms: function (l) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (l.type === 'dynamic') {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var imageParameters = new esri.layers.ImageParameters();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageParameters.format = l.imageFormat;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageParameters.dpi = l.dpi;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var layer = new esri.layers.ArcGISDynamicMapServiceLayer(l.url, {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id: l.id,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageParameters: imageParameters,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; visible: l.visible,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opacity: l.opacity
&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.layer_params = l; //add params to layer object
&amp;nbsp; app.map.addLayer(layer);
&amp;nbsp; 
&amp;nbsp; //create control
&amp;nbsp; var control = '&amp;lt;div style="padding:6px 0 3px; margin-bottom:3px; border-bottom:solid 1px #000;"&amp;gt;'
&amp;nbsp;&amp;nbsp; + '&amp;lt;input id="' + l.id + '_layer_control" /&amp;gt;'
&amp;nbsp;&amp;nbsp; + '&amp;nbsp;&amp;nbsp;'
&amp;nbsp;&amp;nbsp; + l.name
&amp;nbsp;&amp;nbsp; + '&amp;lt;/div&amp;gt;';
&amp;nbsp; //place contol
&amp;nbsp; dojo.place(control, 'left', 'first');
&amp;nbsp; 
&amp;nbsp; //create checkbox
&amp;nbsp; var checkbox = new dijit.form.CheckBox({
&amp;nbsp;&amp;nbsp; checked: l.visible, //set checked same as default visibility
&amp;nbsp;&amp;nbsp; onChange: function () { //onChange function to toggle layer using the layer object itself
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (layer.visible) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer.hide()
&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer.show()
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }, l.id + '_layer_control');
&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (l.type === 'tiled') {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //add tiled layer
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Once again the indents are goofy.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:41:10 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331309#M30609</guid>
      <dc:creator>BenFousek</dc:creator>
      <dc:date>2021-12-11T15:41:10Z</dc:date>
    </item>
    <item>
      <title>Re: dynamically created layers not usuable for layer commands</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331310#M30610</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;You helped get me to the place I needed.&amp;nbsp; I'm using Jquery heavily these days and your dynamic add of the checkbox was exactly what I was missing.&amp;nbsp; I added a jquery button dynamically and the problem was solved in minutes.&amp;nbsp; The dynamic layer adding is beautiful and makes app maintenance so much better.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks a lot&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Jun 2013 12:18:09 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/dynamically-created-layers-not-usuable-for-layer/m-p/331310#M30610</guid>
      <dc:creator>NigelAlford</dc:creator>
      <dc:date>2013-06-13T12:18:09Z</dc:date>
    </item>
  </channel>
</rss>

