<?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: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132292#M12347</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank drhall001 and others. I will test your solution. However, is this still a workaround for an existing bug?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't understand why "LAYER_OPTION_VISIBLE " shouldn't work. Even with scale dependencies. However on my site it's not working, all layers show in popups. Here is the scenario: We have a simple site, and it calls one rest endpoint with around 100 layers in several groups and subgroups, bringing them in as one dynamic layer. I'm using the AGS JS TOC widget, to present it.&amp;nbsp; (Love that thing! )&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using the Identify task for popups. There are several scale categories for scale dependency I set in the MXD so certain layers would appear at one scale, more at another, and finally all, at the lowest zoom scale dependency.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LAYER_OPTION_VISIBLE&amp;nbsp; does nothing. Identify just presents popups for everything. At all scales.&amp;nbsp; I also tried using identifyParams.layerIds = LAYERNAME.visibleLayers&amp;nbsp;&amp;nbsp; ... still no luck.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Based on the API docs for LAYER_OPTION_VISIBLE ... shouldn't this just work? So is this a known API 'bug'?&amp;nbsp; Or is this related to AGS JS TOC?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you to everyone here! I will test the solution above soon this week or next and report back results.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 01 May 2013 18:38:53 GMT</pubDate>
    <dc:creator>KevinMacLeod1</dc:creator>
    <dc:date>2013-05-01T18:38:53Z</dc:date>
    <item>
      <title>IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132280#M12335</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm working on my second web mapping application, and I am implementing an identifyTask on a couple point layers that are scale-dependent. At first, the layers are disabled until the user zooms closer to the points. Eventually, the points are re-enabled because the current scale meets the scale criteria. If I turn on one of the n layers and attempt to identify an area around the point, my identifyTask will identify the layer that's turned on and the layers that are turned off. I believe this is a bug of some sort. My code is below:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;identifyParams = new esri.tasks.IdentifyParameters();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.tolerance = 3;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.returnGeometry = true;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.layerIds = [1,2,3,4,5,6,7,9];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_VISIBLE;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.geometry = geometry;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.mapExtent = map.extent;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.width = map.width;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.height = map.height;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyTask.execute(identifyParams, function (identifyResults) {&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I were to output identifyResults to the console, it would contain the visible and non-visible layers. As you can see, I specified LAYER_OPTION_VISIBLE, so it should only be identifying layers that are turned on, not the ones that are enabled due to scale dependency! I'm using 3.2compact as my API.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Andrew&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Oct 2012 13:54:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132280#M12335</guid>
      <dc:creator>AndrewBrown1</dc:creator>
      <dc:date>2012-10-11T13:54:58Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132281#M12336</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;hi andrew,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LAYER_OPTION_VISIBLE means checked on in the map document used to create the map service, whether or not they show up at a particular scale.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if you take JavaScript out of the equation and attempt to identify a feature directly in REST, you will notice that you pass in geometry to help you search, but you don't pass in any information about a particular scale.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;see the &lt;/SPAN&gt;&lt;A href="http://forums.arcgis.com/threads/65418-Help-with-Identify-Task"&gt;following thread&lt;/A&gt;&lt;SPAN&gt; for more information.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 Oct 2012 21:14:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132281#M12336</guid>
      <dc:creator>JohnGravois</dc:creator>
      <dc:date>2012-10-11T21:14:59Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132282#M12337</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I guess I'll just nix the scale-dependent layers then... makes my life easier. Thanks!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Oct 2012 12:41:26 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132282#M12337</guid>
      <dc:creator>AndrewBrown1</dc:creator>
      <dc:date>2012-10-12T12:41:26Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132283#M12338</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Actually, I just thought of something. My layers are scale-dependent, but they're also initially turned off in the MXD. I can still identify the points when they're enabled but turned off in the mapping application. It shouldn't do this. See my attached screenshot. The circles represent a "selected" point. The "other" layer is turned on and it's properly selected. The other layers are off yet they're "selected" as indicated by the circles.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I open the MXD in ArcMap and zoom to meet the layer dependency, I cannot identify the points using "Visible Layers" under my Identify tool.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Oct 2012 13:18:29 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132283#M12338</guid>
      <dc:creator>AndrewBrown1</dc:creator>
      <dc:date>2012-10-12T13:18:29Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132284#M12339</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;i did some more testing this morning and i made a mistake yesterday in stating that the identify operation doesn't take scale into account.&amp;nbsp; while a scale value is not explicitly supplied, it is necessary to pass in a map extent when identifying.&amp;nbsp; in my tests, rightfully, the values returned given a specific tolerance were different depending on the extent.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro"&gt;identifyParams.layerIds = [1,2,3,4,5,6,7,9];&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;i took a look at the REST documentation and it confirms your expectation that using visible in conjunction with explicitly declared layers should only return results if a returned item is included in one of layers requested &lt;/SPAN&gt;&lt;STRONG&gt;AND&lt;/STRONG&gt;&lt;SPAN&gt; and would be visible in the map service at the current extent.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://resources.arcgis.com/en/help/rest/apiref/identify.html"&gt;http://resources.arcgis.com/en/help/rest/apiref/identify.html&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;i put together a sample application which seems to demonstrate that this is not the case, as a layer index will be returned (even if it has a default visibility of FALSE in the map service)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://jsfiddle.net/jagravois/nPpp9/1/"&gt;http://jsfiddle.net/jagravois/nPpp9/1/&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;all in all, it seems that you should be able to get the results you want by not asking for a specific layer if you don't want it to be included in the result, whether you are using VISIBLE or ALL as your layerOption parameter.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;i hope this information helps.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Oct 2012 17:35:35 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132284#M12339</guid>
      <dc:creator>JohnGravois</dc:creator>
      <dc:date>2012-10-12T17:35:35Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132285#M12340</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;For info, the LAYER_OPTION_VISIBLE doesn't work, it is a know bug (see post in &lt;/SPAN&gt;&lt;A href="http://forums.arcgis.com/threads/68803-BUG-.visibleLayers-returns-group-layeys?p=239911#post239911"&gt;http://forums.arcgis.com/threads/68803-BUG-.visibleLayers-returns-group-layeys?p=239911#post239911&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I had the same issue as you did today - or rather the exact opposite, ID not working when I could see the features, and it was like John says, all tied up in the map extent, although I passed it the current extent I hadn't also passed the height and width.&amp;nbsp; Doing this sorted my issue.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Oct 2012 19:22:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132285#M12340</guid>
      <dc:creator>AdrianMarsden</dc:creator>
      <dc:date>2012-10-12T19:22:47Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132286#M12341</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Been dealing with this myself -- and it's different between jsapi 2.x and 3.x. Only what's showing on map will be identified on. Note the checking of subLayerIds for null, scale checking, etc&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Solution is for jaspi 3.x &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
var referenceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(referenceMapServiceName, {
* * id: 'referenceLayer'
});

var layersInScale;
if (referenceLayer.visible === true &amp;amp;&amp;amp; !(referenceLayer.visibleLayers.length === 0 || referenceLayer.visibleLayers[0] === -1)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersInScale = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.foreach(referenceLayer.createDynamicLayerInfosFromLayerInfos(), function (v) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 (v.subLayerIds === null &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (v.minScale === undefined || v.minScale === 0 || currentScale &amp;lt;= v.minScale) &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (v.maxScale === undefined || v.maxScale === 0 || currentScale &amp;gt;= v.maxScale)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersInScale.push(v.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; }
});

var identifyParams = new esri.tasks.IdentifyParameters(),
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyTask = new esri.tasks.IdentifyTask(referenceLayer.url);
identifyParams.geometry = geom;
identifyParams.mapExtent = map.extent;
identifyParams.tolerance = 3;
identifyParams.returnGeometry = true;
identifyParams.layerIds = aLayerIds;
//only refers to default visible layers as defined on the server
identifyParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;
identifyParams.width = map.width;
identifyParams.height = map.height;
return identifyTask.execute(identifyParams);
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Bonus: Identifies on multiple services at once and return as one array using dojo.DeferredList&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(using some jQuery loops just change to for or dojo.foreach)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
dojo.require("dojo.DeferredList");

referenceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(referenceMapServiceName, {
&amp;nbsp;&amp;nbsp;&amp;nbsp; id: 'referenceLayer'
});

//Operational layers
operationalLayer = new esri.layers.ArcGISDynamicMapServiceLayer(operationalMapServiceName, {
&amp;nbsp;&amp;nbsp;&amp;nbsp; id: 'operationalLayer'
});

function executeIdentify(geom, serviceName, aLayerIds) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var identifyParams = new esri.tasks.IdentifyParameters(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyTask = new esri.tasks.IdentifyTask(serviceName);
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.geometry = geom;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.mapExtent = map.extent;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.tolerance = 3;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.returnGeometry = true;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.layerIds = aLayerIds;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //only refers to default visible layers as defined on the server
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.width = map.width;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.height = map.height;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return identifyTask.execute(identifyParams);
}

function doIdentify(evt) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var geom = evt.mapPoint,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersInScale,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aDeferreds = [],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; defList,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentScale = map.getScale(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersToIdentify = [referenceLayer, operationalLayer];

&amp;nbsp;&amp;nbsp;&amp;nbsp; map.graphics.clear();
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyLayerKeyPrevious = undefined;

&amp;nbsp;&amp;nbsp;&amp;nbsp; $.each(layersToIdentify, function (key, value) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (value.visible === true &amp;amp;&amp;amp; !(value.visibleLayers.length === 0 || value.visibleLayers[0] === -1)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersInScale = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.each(value.createDynamicLayerInfosFromLayerInfos(), function (k, v) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 (v.subLayerIds === null &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (v.minScale === undefined || v.minScale === 0 || currentScale &amp;lt;= v.minScale) &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (v.maxScale === undefined || v.maxScale === 0 || currentScale &amp;gt;= v.maxScale)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersInScale.push(v.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;&amp;nbsp;&amp;nbsp;&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 (layersInScale.length &amp;gt; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp; aDeferreds.push(executeIdentify(evt.mapPoint, value.url, layersInScale));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp;&amp;nbsp; // create a deferred list to aggregate the state for all identify queries
&amp;nbsp;&amp;nbsp;&amp;nbsp; defList = new dojo.DeferredList(aDeferreds);
&amp;nbsp;&amp;nbsp;&amp;nbsp; defList.then(function (res) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // "res" is 2D array of results
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // array&lt;N&gt;[0] indicates success or failure
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // array&lt;N&gt;[1] is the array of identity results returned
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; formatIdentifyResults(res);
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
}
&lt;/N&gt;&lt;/N&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 07:25:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132286#M12341</guid>
      <dc:creator>DouglasHall</dc:creator>
      <dc:date>2021-12-11T07:25:01Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132287#M12342</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank you for your help! I'll definitely implement this into my application.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Been dealing with this myself -- and it's different between jsapi 2.x and 3.x. Only what's showing on map will be identified on. Note the checking of subLayerIds for null, scale checking, etc&lt;BR /&gt;&lt;BR /&gt;Solution is for jaspi 3.x &lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
var referenceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(referenceMapServiceName, {
* * id: 'referenceLayer'
});

var layersInScale;
if (referenceLayer.visible === true &amp;amp;&amp;amp; !(referenceLayer.visibleLayers.length === 0 || referenceLayer.visibleLayers[0] === -1)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersInScale = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.foreach(referenceLayer.createDynamicLayerInfosFromLayerInfos(), function (v) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 (v.subLayerIds === null &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (v.minScale === undefined || v.minScale === 0 || currentScale &amp;lt;= v.minScale) &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (v.maxScale === undefined || v.maxScale === 0 || currentScale &amp;gt;= v.maxScale)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersInScale.push(v.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; }
});

var identifyParams = new esri.tasks.IdentifyParameters(),
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyTask = new esri.tasks.IdentifyTask(referenceLayer.url);
identifyParams.geometry = geom;
identifyParams.mapExtent = map.extent;
identifyParams.tolerance = 3;
identifyParams.returnGeometry = true;
identifyParams.layerIds = aLayerIds;
//only refers to default visible layers as defined on the server
identifyParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;
identifyParams.width = map.width;
identifyParams.height = map.height;
return identifyTask.execute(identifyParams);
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;Bonus: Identifies on multiple services at once and return as one array using dojo.DeferredList&lt;BR /&gt;(using some jQuery loops just change to for or dojo.foreach)&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
dojo.require("dojo.DeferredList");

referenceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(referenceMapServiceName, {
&amp;nbsp;&amp;nbsp;&amp;nbsp; id: 'referenceLayer'
});

//Operational layers
operationalLayer = new esri.layers.ArcGISDynamicMapServiceLayer(operationalMapServiceName, {
&amp;nbsp;&amp;nbsp;&amp;nbsp; id: 'operationalLayer'
});

function executeIdentify(geom, serviceName, aLayerIds) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var identifyParams = new esri.tasks.IdentifyParameters(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyTask = new esri.tasks.IdentifyTask(serviceName);
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.geometry = geom;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.mapExtent = map.extent;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.tolerance = 3;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.returnGeometry = true;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.layerIds = aLayerIds;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //only refers to default visible layers as defined on the server
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.width = map.width;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.height = map.height;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return identifyTask.execute(identifyParams);
}

function doIdentify(evt) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var geom = evt.mapPoint,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersInScale,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aDeferreds = [],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; defList,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentScale = map.getScale(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersToIdentify = [referenceLayer, operationalLayer];

&amp;nbsp;&amp;nbsp;&amp;nbsp; map.graphics.clear();
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyLayerKeyPrevious = undefined;

&amp;nbsp;&amp;nbsp;&amp;nbsp; $.each(layersToIdentify, function (key, value) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (value.visible === true &amp;amp;&amp;amp; !(value.visibleLayers.length === 0 || value.visibleLayers[0] === -1)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersInScale = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $.each(value.createDynamicLayerInfosFromLayerInfos(), function (k, v) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 (v.subLayerIds === null &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (v.minScale === undefined || v.minScale === 0 || currentScale &amp;lt;= v.minScale) &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (v.maxScale === undefined || v.maxScale === 0 || currentScale &amp;gt;= v.maxScale)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layersInScale.push(v.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;&amp;nbsp;&amp;nbsp;&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 (layersInScale.length &amp;gt; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp; aDeferreds.push(executeIdentify(evt.mapPoint, value.url, layersInScale));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp;&amp;nbsp; // create a deferred list to aggregate the state for all identify queries
&amp;nbsp;&amp;nbsp;&amp;nbsp; defList = new dojo.DeferredList(aDeferreds);
&amp;nbsp;&amp;nbsp;&amp;nbsp; defList.then(function (res) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // "res" is 2D array of results
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // array&lt;N&gt;[0] indicates success or failure
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // array&lt;N&gt;[1] is the array of identity results returned
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; formatIdentifyResults(res);
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
}
&lt;/N&gt;&lt;/N&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 07:25:03 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132287#M12342</guid>
      <dc:creator>AndrewBrown1</dc:creator>
      <dc:date>2021-12-11T07:25:03Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132288#M12343</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Will the LAYER_OPTION_VISIBLE bug be fixed in the next version of the API?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;i did some more testing this morning and i made a mistake yesterday in stating that the identify operation doesn't take scale into account.&amp;nbsp; while a scale value is not explicitly supplied, it is necessary to pass in a map extent when identifying.&amp;nbsp; in my tests, rightfully, the values returned given a specific tolerance were different depending on the extent.&lt;BR /&gt;&lt;BR /&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_macro_code jive_text_macro"&gt;identifyParams.layerIds = [1,2,3,4,5,6,7,9];&lt;/PRE&gt;&lt;BR /&gt;i took a look at the REST documentation and it confirms your expectation that using visible in conjunction with explicitly declared layers should only return results if a returned item is included in one of layers requested &lt;STRONG&gt;AND&lt;/STRONG&gt; and would be visible in the map service at the current extent.&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://resources.arcgis.com/en/help/rest/apiref/identify.html"&gt;http://resources.arcgis.com/en/help/rest/apiref/identify.html&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;i put together a sample application which seems to demonstrate that this is not the case, as a layer index will be returned (even if it has a default visibility of FALSE in the map service)&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://jsfiddle.net/jagravois/nPpp9/1/"&gt;http://jsfiddle.net/jagravois/nPpp9/1/&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;all in all, it seems that you should be able to get the results you want by not asking for a specific layer if you don't want it to be included in the result, whether you are using VISIBLE or ALL as your layerOption parameter.&lt;BR /&gt;&lt;BR /&gt;i hope this information helps.&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2012 13:05:37 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132288#M12343</guid>
      <dc:creator>AndrewBrown1</dc:creator>
      <dc:date>2012-10-15T13:05:37Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132289#M12344</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;It's been open for three years, so I wouldn't hold your breath.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Oct 2012 13:06:48 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132289#M12344</guid>
      <dc:creator>AdrianMarsden</dc:creator>
      <dc:date>2012-10-15T13:06:48Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132290#M12345</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Andrew,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;just to clarify, the issue i documented earlier in this thread is not the same issue that Adrian is referring to, and it is not a JS API bug, but rather a problem with the REST response itself.&amp;nbsp; i'd be happy to log a new NIM for this issue, but i'm not quite sure i understand the use case for formatting a request to explicitly include a layer that you don't want to be returned.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Oct 2012 15:15:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132290#M12345</guid>
      <dc:creator>JohnGravois</dc:creator>
      <dc:date>2012-10-16T15:15:28Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132291#M12346</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;***Just updated to add one more check and better variable naming***&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Been dealing with this myself -- and it's different between jsapi 2.x and 3.x. Only what's showing on map will be identified on. Note the checking of subLayerIds for null, scale checking, after getting the visibleLayers from service.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Solution is for jaspi 3.x &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
function doIdentify(evt) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var referenceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(referenceMapServiceName, {id: 'referenceLayer'});
&amp;nbsp;&amp;nbsp;&amp;nbsp; var aVisibleSubLayers = referenceLayer.visibleLayers,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aLayersInScale = [],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams = new esri.tasks.IdentifyParameters(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyTask = new esri.tasks.IdentifyTask(referenceLayer.url);

&amp;nbsp;&amp;nbsp;&amp;nbsp; //loop thru visible sublayers that are not group layers, then check within scale
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (referenceLayer.visible === true &amp;amp;&amp;amp; aVisibleSubLayers.length !== 0 &amp;amp;&amp;amp; aVisibleSubLayers[0] !== -1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.forEach(referenceLayer.createDynamicLayerInfosFromLayerInfos(), function (dLayInfo) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (dLayInfo.subLayerIds === null &amp;amp;&amp;amp; dojo.indexOf(aVisibleSubLayers, dLayInfo.id) !== -1 &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (dLayInfo.minScale === undefined || dLayInfo.minScale === 0 || map.getScale() &amp;lt;= dLayInfo.minScale) &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (dLayInfo.maxScale === undefined || dLayInfo.maxScale === 0 || map.getScale() &amp;gt;= dLayInfo.maxScale)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aLayersInScale.push(dLayInfo.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;&amp;nbsp; if (aLayersInScale.length &amp;gt; 0) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.geometry = evt.mapPoint;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.mapExtent = map.extent;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.tolerance = 3;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.returnGeometry = true;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.layerIds = aLayersInScale;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.width = map.width;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.height = map.height;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyTask.execute(identifyParams, function(idResults) { 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doSomethingWithIdentifyResults(idResults);
&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;Bonus: Identifies on multiple services at once and return as one array using dojo.DeferredList&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
dojo.require("dojo.DeferredList");

referenceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(referenceMapServiceName, {id: 'referenceLayer'});

//Operational layers
operationalLayer = new esri.layers.ArcGISDynamicMapServiceLayer(operationalMapServiceName, {id: 'operationalLayer'});

function executeIdentify(geom, serviceName, aLayerIds) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var identifyParams = new esri.tasks.IdentifyParameters(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyTask = new esri.tasks.IdentifyTask(serviceName);
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.geometry = geom;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.mapExtent = map.extent;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.tolerance = 3;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.returnGeometry = true;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.layerIds = aLayerIds;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.layerOption = esri.tasks.IdentifyParameters.LAYER_OPTION_ALL;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.width = map.width;
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyParams.height = map.height;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return identifyTask.execute(identifyParams);
}

function doIdentify(evt) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var geom = evt.mapPoint,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aLayersInScale,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aDeferreds = [],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deferredList,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentScale = map.getScale(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aVisibleSubLayers,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aAGSDynMapServicesToIdentify = [referenceLayer, operationalLayer];

&amp;nbsp;&amp;nbsp;&amp;nbsp; map.graphics.clear();
&amp;nbsp;&amp;nbsp;&amp;nbsp; identifyLayerKeyPrevious = undefined;

&amp;nbsp;&amp;nbsp;&amp;nbsp; //loop thru dynamic services, then thru visible sublayers that are not group layers, then check within scale
&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.forEach(aAGSDynMapServicesToIdentify, function (agsDynMapService) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aVisibleSubLayers = agsDynMapService.visibleLayers;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (agsDynMapService.visible === true &amp;amp;&amp;amp; aVisibleSubLayers.length !== 0 &amp;amp;&amp;amp; aVisibleSubLayers[0] !== -1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aLayersInScale = [];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.forEach(agsDynMapService.createDynamicLayerInfosFromLayerInfos(), function (dLayInfo) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 (dLayInfo.subLayerIds === null &amp;amp;&amp;amp; dojo.indexOf(aVisibleSubLayers, dLayInfo.id) !== -1 &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (dLayInfo.minScale === undefined || dLayInfo.minScale === 0 || currentScale &amp;lt;= dLayInfo.minScale) &amp;amp;&amp;amp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (dLayInfo.maxScale === undefined || dLayInfo.maxScale === 0 || currentScale &amp;gt;= dLayInfo.maxScale)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aLayersInScale.push(dLayInfo.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;&amp;nbsp;&amp;nbsp;&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 (aLayersInScale.length &amp;gt; 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;&amp;nbsp;&amp;nbsp;&amp;nbsp; aDeferreds.push(executeIdentify(evt.mapPoint, agsDynMapService.url, aLayersInScale));
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp;&amp;nbsp; // create a deferred list to aggregate the state for multiple asynchronous identify queries
&amp;nbsp;&amp;nbsp;&amp;nbsp; deferredList = new dojo.DeferredList(aDeferreds);
&amp;nbsp;&amp;nbsp;&amp;nbsp; deferredList.then(function (aIdentifyResults) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // "aIdentifyResults" is 2D array of results
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // array&lt;N&gt;[0] boolean true or false, success or failure of individual call
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // array&lt;N&gt;[1] is the array of identity results returned
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doSomethingWithIdentifyResults(aIdentifyResults);
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
}
&lt;/N&gt;&lt;/N&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 07:25:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132291#M12346</guid>
      <dc:creator>DouglasHall</dc:creator>
      <dc:date>2021-12-11T07:25:06Z</dc:date>
    </item>
    <item>
      <title>Re: IdentifyTask Returning Scale-Dependent Layers When Outside of Scale Range</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132292#M12347</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank drhall001 and others. I will test your solution. However, is this still a workaround for an existing bug?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't understand why "LAYER_OPTION_VISIBLE " shouldn't work. Even with scale dependencies. However on my site it's not working, all layers show in popups. Here is the scenario: We have a simple site, and it calls one rest endpoint with around 100 layers in several groups and subgroups, bringing them in as one dynamic layer. I'm using the AGS JS TOC widget, to present it.&amp;nbsp; (Love that thing! )&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using the Identify task for popups. There are several scale categories for scale dependency I set in the MXD so certain layers would appear at one scale, more at another, and finally all, at the lowest zoom scale dependency.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;LAYER_OPTION_VISIBLE&amp;nbsp; does nothing. Identify just presents popups for everything. At all scales.&amp;nbsp; I also tried using identifyParams.layerIds = LAYERNAME.visibleLayers&amp;nbsp;&amp;nbsp; ... still no luck.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Based on the API docs for LAYER_OPTION_VISIBLE ... shouldn't this just work? So is this a known API 'bug'?&amp;nbsp; Or is this related to AGS JS TOC?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you to everyone here! I will test the solution above soon this week or next and report back results.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 May 2013 18:38:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/identifytask-returning-scale-dependent-layers-when/m-p/132292#M12347</guid>
      <dc:creator>KevinMacLeod1</dc:creator>
      <dc:date>2013-05-01T18:38:53Z</dc:date>
    </item>
  </channel>
</rss>

