<?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 adding featurelayer is slow and produces errors for ie in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/adding-featurelayer-is-slow-and-produces-errors/m-p/504245#M46815</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi, first time ArcGIS API user here. The app I am building loads a series of FeatureLayer on top of an ArcGISDynamicMapServiceLayer. I based my code on the Class Breaks Renderer sample &lt;/SPAN&gt;&lt;A href="http://help.arcgis.com/en/webapi/javascript/arcgis/help/jssamples_start.htm#jssamples/renderer_class_breaks.html" rel="nofollow noopener noreferrer" target="_blank"&gt;here&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The app is simply supposed to load relevant symbology information based on the attribute the user chooses.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&amp;gt;
&amp;lt;html&amp;gt;
&amp;nbsp; &amp;lt;head&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Map&amp;lt;/title&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.8"&amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript"&amp;gt;
 
 
&amp;nbsp; dojo.require("dijit.layout.BorderContainer");
&amp;nbsp; dojo.require("dijit.layout.ContentPane");
&amp;nbsp; dojo.require("esri.map");
&amp;nbsp; dojo.require("esri.layers.FeatureLayer");
&amp;nbsp; dojo.require("esri.renderer");
&amp;nbsp; dojo.require("esri.graphic");

&amp;nbsp; var map;
&amp;nbsp; var basemap;
&amp;nbsp; var basemapServiceSource;
&amp;nbsp; var featuremapServiceSource;
&amp;nbsp; var renderer;
&amp;nbsp; var featuremapAdded;

&amp;nbsp; function init() {

&amp;nbsp;&amp;nbsp; // for now, these are referring to a single source
&amp;nbsp;&amp;nbsp; basemapServiceSource = "http://co-gis-01/ArcGIS/rest/services/dev_ExIS/exis2/MapServer";
&amp;nbsp;&amp;nbsp; featuremapServiceSource = "http://co-gis-01/ArcGIS/rest/services/dev_ExIS/exis2/MapServer";

&amp;nbsp;&amp;nbsp; //Add the topographic layer to the map. View the ArcGIS Online site for services http://arcgisonline/home/search.html?t=content&amp;amp;f=typekeywords:service&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; basemap = new esri.layers.ArcGISDynamicMapServiceLayer(basemapServiceSource);
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; map = new esri.Map("map", {
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // remove logo
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logo:false,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; extent:basemap.fullExtent
&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp; map.addLayer(basemap);

&amp;nbsp;&amp;nbsp; /*
&amp;nbsp;&amp;nbsp;&amp;nbsp; IDs of Layers for http://co-gis-01/ArcGIS/rest/services/dev_ExIS/exis/MapServer
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Regions (labelled, no symbology)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 Bridge Condition
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 Road Condition
&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 Road Roughness
&amp;nbsp;&amp;nbsp;&amp;nbsp; layers 4, 5, 6 are invisible, don't use
&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp; basemap.setVisibleLayers([0]);

&amp;nbsp;&amp;nbsp; //[min, max, r, g, b, a]
&amp;nbsp;&amp;nbsp; // min &amp;lt;= x &amp;lt; max
&amp;nbsp;&amp;nbsp; // edit this to change the colors for the ranges
&amp;nbsp;&amp;nbsp; var classBreak = [
&amp;nbsp;&amp;nbsp;&amp;nbsp; [100, 210, 255, 0, 0, 0.25],
&amp;nbsp;&amp;nbsp;&amp;nbsp; [210, 410, 255, 128, 0, 0.25],
&amp;nbsp;&amp;nbsp;&amp;nbsp; [410, 710, 255, 255, 0, 0.25],
&amp;nbsp;&amp;nbsp;&amp;nbsp; [710, 1000, 0, 255, 0, 0.25]
&amp;nbsp;&amp;nbsp; ];&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; settleClassBreaks(classBreak);
&amp;nbsp;&amp;nbsp; featuremapAdded = false;
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // executes function on onLoad event
&amp;nbsp;&amp;nbsp; dojo.connect(map, 'onLoad', function(theMap) { 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; //resize the map when the browser resizes
&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.connect(dijit.byId('map'), 'resize', map,map.resize);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; // these must be execute only after the map has been loaded
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.disableMapNavigation();
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.hidePanArrows();
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.hideZoomSlider();
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.setExtent(basemap.fullExtent);
&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // executes function on onLoad event
&amp;nbsp;&amp;nbsp; dojo.connect(map, "onLoad", showFeatureRender(1));
&amp;nbsp; }
&amp;nbsp; 
&amp;nbsp; function showFeatureRender(layerID) {
&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // define all region id
&amp;nbsp;&amp;nbsp; var adminID = new Array(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 73, 2, 187, 346, 478, 651, 854,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1673, 969, 1128, 1310, 1485, 1776,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1874, 1989, 2073
&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // if a region information has already been added, remove it first
&amp;nbsp;&amp;nbsp; if (featuremapAdded) {
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; // get layer ids and remove all
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (map.graphicsLayerIds.length &amp;gt; 0) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var graphLayerID = map.graphicsLayerIds[0];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.removeLayer(map.getLayer(graphLayerID));
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // add each region layers one by one
&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; adminID.length; i++) {
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; var infoTemplate = new esri.InfoTemplate("${NAME}", "${*}");
&amp;nbsp;&amp;nbsp;&amp;nbsp; var featuremap = new esri.layers.FeatureLayer(featuremapServiceSource + "/" + String(layerID), {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outFields: ["*"],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; infoTemplate: infoTemplate
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; featuremap.setRenderer(renderer);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; // filter all regions but one
&amp;nbsp;&amp;nbsp;&amp;nbsp; // REGION attribute here refers to the attribute in the Region layer of the geodatabase, not exis' map_data table
&amp;nbsp;&amp;nbsp;&amp;nbsp; featuremap.setDefinitionExpression("ADMIN_ID = " + String(adminID&lt;I&gt;));
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; // add the region as a layer
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.addLayer(featuremap);

&amp;nbsp;&amp;nbsp;&amp;nbsp; // set this flag to true
&amp;nbsp;&amp;nbsp;&amp;nbsp; featuremapAdded = true;
&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; 
&amp;nbsp; function settleClassBreaks(classBreak) {
&amp;nbsp; /*
&amp;nbsp;&amp;nbsp; sets the symbolobgy render based on the classBreak parameter
&amp;nbsp; */
&amp;nbsp; 
&amp;nbsp;&amp;nbsp; var symbol = new esri.symbol.SimpleFillSymbol();
&amp;nbsp;&amp;nbsp; renderer = new esri.renderer.ClassBreaksRenderer(symbol, "value");
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; var symbol = new esri.symbol.SimpleFillSymbol();

&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; classBreak.length; i++) {
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; var fillSymbol = new esri.symbol.SimpleFillSymbol(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esri.symbol.SimpleFillSymbol.STYLE_SOLID,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new esri.symbol.SimpleLineSymbol().setStyle(esri.symbol.SimpleLineSymbol.STYLE_NULL),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new dojo.Color([classBreak&lt;I&gt;[2], classBreak&lt;I&gt;[3], classBreak&lt;I&gt;[4], classBreak&lt;I&gt;[5]])
&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp; renderer.addBreak(classBreak&lt;I&gt;[0], classBreak&lt;I&gt;[1], fillSymbol);
&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }

&amp;nbsp; dojo.addOnLoad(init);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;
&amp;nbsp; &amp;lt;/head&amp;gt;
&amp;nbsp; 
&amp;nbsp; &amp;lt;body&amp;gt;
&amp;nbsp; 
 &amp;lt;div id="map" style="width:600px; height:600px; border:1px solid #000"&amp;gt;
 &amp;lt;/div&amp;gt;
&amp;nbsp; 
 &amp;lt;br /&amp;gt;

 &amp;lt;form method="POST" action="ENTER PAGE NAME"&amp;gt;
&amp;nbsp; &amp;lt;input type="radio" name="layer" value="bridgecondition" onclick="showFeatureRender(1);" checked&amp;gt;Bridge Condition
&amp;nbsp; &amp;lt;/br&amp;gt;
&amp;nbsp; &amp;lt;input type="radio" name="layer" value="roadcondition" onclick="showFeatureRender(2);"&amp;gt;Road Condition
&amp;nbsp; &amp;lt;/br&amp;gt;
&amp;nbsp; &amp;lt;input type="radio" name="layer" value="roadroughness" onclick="showFeatureRender(3);"&amp;gt;Road Roughness
&amp;nbsp; &amp;lt;/br&amp;gt;
 &amp;lt;/form&amp;gt;

&amp;nbsp; &amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The loop code that loads each FeatureLayer from a single mapservice is in the showFeatureRender function (there is a need to do so instead of loading the entire layer because each sublayer would need to have specific onClick event). This works fine and fast in Firefox 13 &lt;/SPAN&gt;&lt;A href="http://img29.imageshack.us/img29/5706/ff13c.png" rel="nofollow noopener noreferrer" target="_blank"&gt;(pic) &lt;/A&gt;&lt;SPAN&gt;and Chrome 19.x &lt;/SPAN&gt;&lt;A href="http://img195.imageshack.us/img195/5946/chrome19.png" rel="nofollow noopener noreferrer" target="_blank"&gt;(pic)&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The problem is with IE 8 and 9. Testing on both versions and on IETester, it loads horrendously slow (about 2 mins) and even freezes the browser, showing an unresponsive script dialog &lt;/SPAN&gt;&lt;A href="http://img20.imageshack.us/img20/8089/ie9err2.png" rel="nofollow noopener noreferrer" target="_blank"&gt;(pic)&lt;/A&gt;&lt;SPAN&gt;. If the script is allowed to continue, it will not load some of the FeatureLayers &lt;/SPAN&gt;&lt;A href="http://img515.imageshack.us/img515/2109/ie9err1.png" rel="nofollow noopener noreferrer" target="_blank"&gt;(pic)&lt;/A&gt;&lt;SPAN&gt; (unloaded sublayers remain white/blank).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The application does connect to another db using oledb, but there are only 17 records involved when joining. Too small, I think, to cause this horrible delay in loading. Can anyone enlighten me as to what is with IE not present in FF and Chrome that causes this issue? I realize that there is an api 3.0 version already, but using it causes no maps to load at all in all browsers, so I'm retaining 2.8 for now.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 22:07:31 GMT</pubDate>
    <dc:creator>Egan_LouisFajardo</dc:creator>
    <dc:date>2021-12-11T22:07:31Z</dc:date>
    <item>
      <title>adding featurelayer is slow and produces errors for ie</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/adding-featurelayer-is-slow-and-produces-errors/m-p/504245#M46815</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi, first time ArcGIS API user here. The app I am building loads a series of FeatureLayer on top of an ArcGISDynamicMapServiceLayer. I based my code on the Class Breaks Renderer sample &lt;/SPAN&gt;&lt;A href="http://help.arcgis.com/en/webapi/javascript/arcgis/help/jssamples_start.htm#jssamples/renderer_class_breaks.html" rel="nofollow noopener noreferrer" target="_blank"&gt;here&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The app is simply supposed to load relevant symbology information based on the attribute the user chooses.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&amp;gt;
&amp;lt;html&amp;gt;
&amp;nbsp; &amp;lt;head&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;Map&amp;lt;/title&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.8"&amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type="text/javascript"&amp;gt;
 
 
&amp;nbsp; dojo.require("dijit.layout.BorderContainer");
&amp;nbsp; dojo.require("dijit.layout.ContentPane");
&amp;nbsp; dojo.require("esri.map");
&amp;nbsp; dojo.require("esri.layers.FeatureLayer");
&amp;nbsp; dojo.require("esri.renderer");
&amp;nbsp; dojo.require("esri.graphic");

&amp;nbsp; var map;
&amp;nbsp; var basemap;
&amp;nbsp; var basemapServiceSource;
&amp;nbsp; var featuremapServiceSource;
&amp;nbsp; var renderer;
&amp;nbsp; var featuremapAdded;

&amp;nbsp; function init() {

&amp;nbsp;&amp;nbsp; // for now, these are referring to a single source
&amp;nbsp;&amp;nbsp; basemapServiceSource = "http://co-gis-01/ArcGIS/rest/services/dev_ExIS/exis2/MapServer";
&amp;nbsp;&amp;nbsp; featuremapServiceSource = "http://co-gis-01/ArcGIS/rest/services/dev_ExIS/exis2/MapServer";

&amp;nbsp;&amp;nbsp; //Add the topographic layer to the map. View the ArcGIS Online site for services http://arcgisonline/home/search.html?t=content&amp;amp;f=typekeywords:service&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; basemap = new esri.layers.ArcGISDynamicMapServiceLayer(basemapServiceSource);
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; map = new esri.Map("map", {
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // remove logo
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logo:false,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; extent:basemap.fullExtent
&amp;nbsp;&amp;nbsp;&amp;nbsp; });

&amp;nbsp;&amp;nbsp; map.addLayer(basemap);

&amp;nbsp;&amp;nbsp; /*
&amp;nbsp;&amp;nbsp;&amp;nbsp; IDs of Layers for http://co-gis-01/ArcGIS/rest/services/dev_ExIS/exis/MapServer
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Regions (labelled, no symbology)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 Bridge Condition
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 Road Condition
&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 Road Roughness
&amp;nbsp;&amp;nbsp;&amp;nbsp; layers 4, 5, 6 are invisible, don't use
&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp; basemap.setVisibleLayers([0]);

&amp;nbsp;&amp;nbsp; //[min, max, r, g, b, a]
&amp;nbsp;&amp;nbsp; // min &amp;lt;= x &amp;lt; max
&amp;nbsp;&amp;nbsp; // edit this to change the colors for the ranges
&amp;nbsp;&amp;nbsp; var classBreak = [
&amp;nbsp;&amp;nbsp;&amp;nbsp; [100, 210, 255, 0, 0, 0.25],
&amp;nbsp;&amp;nbsp;&amp;nbsp; [210, 410, 255, 128, 0, 0.25],
&amp;nbsp;&amp;nbsp;&amp;nbsp; [410, 710, 255, 255, 0, 0.25],
&amp;nbsp;&amp;nbsp;&amp;nbsp; [710, 1000, 0, 255, 0, 0.25]
&amp;nbsp;&amp;nbsp; ];&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; settleClassBreaks(classBreak);
&amp;nbsp;&amp;nbsp; featuremapAdded = false;
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // executes function on onLoad event
&amp;nbsp;&amp;nbsp; dojo.connect(map, 'onLoad', function(theMap) { 
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; //resize the map when the browser resizes
&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.connect(dijit.byId('map'), 'resize', map,map.resize);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; // these must be execute only after the map has been loaded
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.disableMapNavigation();
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.hidePanArrows();
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.hideZoomSlider();
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.setExtent(basemap.fullExtent);
&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // executes function on onLoad event
&amp;nbsp;&amp;nbsp; dojo.connect(map, "onLoad", showFeatureRender(1));
&amp;nbsp; }
&amp;nbsp; 
&amp;nbsp; function showFeatureRender(layerID) {
&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // define all region id
&amp;nbsp;&amp;nbsp; var adminID = new Array(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 73, 2, 187, 346, 478, 651, 854,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1673, 969, 1128, 1310, 1485, 1776,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1874, 1989, 2073
&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // if a region information has already been added, remove it first
&amp;nbsp;&amp;nbsp; if (featuremapAdded) {
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; // get layer ids and remove all
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (map.graphicsLayerIds.length &amp;gt; 0) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var graphLayerID = map.graphicsLayerIds[0];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.removeLayer(map.getLayer(graphLayerID));
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; // add each region layers one by one
&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; adminID.length; i++) {
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; var infoTemplate = new esri.InfoTemplate("${NAME}", "${*}");
&amp;nbsp;&amp;nbsp;&amp;nbsp; var featuremap = new esri.layers.FeatureLayer(featuremapServiceSource + "/" + String(layerID), {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mode: esri.layers.FeatureLayer.MODE_SNAPSHOT,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outFields: ["*"],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; infoTemplate: infoTemplate
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp; featuremap.setRenderer(renderer);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; // filter all regions but one
&amp;nbsp;&amp;nbsp;&amp;nbsp; // REGION attribute here refers to the attribute in the Region layer of the geodatabase, not exis' map_data table
&amp;nbsp;&amp;nbsp;&amp;nbsp; featuremap.setDefinitionExpression("ADMIN_ID = " + String(adminID&lt;I&gt;));
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; // add the region as a layer
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.addLayer(featuremap);

&amp;nbsp;&amp;nbsp;&amp;nbsp; // set this flag to true
&amp;nbsp;&amp;nbsp;&amp;nbsp; featuremapAdded = true;
&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
&amp;nbsp; 
&amp;nbsp; function settleClassBreaks(classBreak) {
&amp;nbsp; /*
&amp;nbsp;&amp;nbsp; sets the symbolobgy render based on the classBreak parameter
&amp;nbsp; */
&amp;nbsp; 
&amp;nbsp;&amp;nbsp; var symbol = new esri.symbol.SimpleFillSymbol();
&amp;nbsp;&amp;nbsp; renderer = new esri.renderer.ClassBreaksRenderer(symbol, "value");
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; var symbol = new esri.symbol.SimpleFillSymbol();

&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; classBreak.length; i++) {
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; var fillSymbol = new esri.symbol.SimpleFillSymbol(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esri.symbol.SimpleFillSymbol.STYLE_SOLID,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new esri.symbol.SimpleLineSymbol().setStyle(esri.symbol.SimpleLineSymbol.STYLE_NULL),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new dojo.Color([classBreak&lt;I&gt;[2], classBreak&lt;I&gt;[3], classBreak&lt;I&gt;[4], classBreak&lt;I&gt;[5]])
&amp;nbsp;&amp;nbsp;&amp;nbsp; );
&amp;nbsp;&amp;nbsp;&amp;nbsp; renderer.addBreak(classBreak&lt;I&gt;[0], classBreak&lt;I&gt;[1], fillSymbol);
&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }

&amp;nbsp; dojo.addOnLoad(init);
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;
&amp;nbsp; &amp;lt;/head&amp;gt;
&amp;nbsp; 
&amp;nbsp; &amp;lt;body&amp;gt;
&amp;nbsp; 
 &amp;lt;div id="map" style="width:600px; height:600px; border:1px solid #000"&amp;gt;
 &amp;lt;/div&amp;gt;
&amp;nbsp; 
 &amp;lt;br /&amp;gt;

 &amp;lt;form method="POST" action="ENTER PAGE NAME"&amp;gt;
&amp;nbsp; &amp;lt;input type="radio" name="layer" value="bridgecondition" onclick="showFeatureRender(1);" checked&amp;gt;Bridge Condition
&amp;nbsp; &amp;lt;/br&amp;gt;
&amp;nbsp; &amp;lt;input type="radio" name="layer" value="roadcondition" onclick="showFeatureRender(2);"&amp;gt;Road Condition
&amp;nbsp; &amp;lt;/br&amp;gt;
&amp;nbsp; &amp;lt;input type="radio" name="layer" value="roadroughness" onclick="showFeatureRender(3);"&amp;gt;Road Roughness
&amp;nbsp; &amp;lt;/br&amp;gt;
 &amp;lt;/form&amp;gt;

&amp;nbsp; &amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The loop code that loads each FeatureLayer from a single mapservice is in the showFeatureRender function (there is a need to do so instead of loading the entire layer because each sublayer would need to have specific onClick event). This works fine and fast in Firefox 13 &lt;/SPAN&gt;&lt;A href="http://img29.imageshack.us/img29/5706/ff13c.png" rel="nofollow noopener noreferrer" target="_blank"&gt;(pic) &lt;/A&gt;&lt;SPAN&gt;and Chrome 19.x &lt;/SPAN&gt;&lt;A href="http://img195.imageshack.us/img195/5946/chrome19.png" rel="nofollow noopener noreferrer" target="_blank"&gt;(pic)&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The problem is with IE 8 and 9. Testing on both versions and on IETester, it loads horrendously slow (about 2 mins) and even freezes the browser, showing an unresponsive script dialog &lt;/SPAN&gt;&lt;A href="http://img20.imageshack.us/img20/8089/ie9err2.png" rel="nofollow noopener noreferrer" target="_blank"&gt;(pic)&lt;/A&gt;&lt;SPAN&gt;. If the script is allowed to continue, it will not load some of the FeatureLayers &lt;/SPAN&gt;&lt;A href="http://img515.imageshack.us/img515/2109/ie9err1.png" rel="nofollow noopener noreferrer" target="_blank"&gt;(pic)&lt;/A&gt;&lt;SPAN&gt; (unloaded sublayers remain white/blank).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The application does connect to another db using oledb, but there are only 17 records involved when joining. Too small, I think, to cause this horrible delay in loading. Can anyone enlighten me as to what is with IE not present in FF and Chrome that causes this issue? I realize that there is an api 3.0 version already, but using it causes no maps to load at all in all browsers, so I'm retaining 2.8 for now.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 22:07:31 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/adding-featurelayer-is-slow-and-produces-errors/m-p/504245#M46815</guid>
      <dc:creator>Egan_LouisFajardo</dc:creator>
      <dc:date>2021-12-11T22:07:31Z</dc:date>
    </item>
    <item>
      <title>Re: adding featurelayer is slow and produces errors for ie</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/adding-featurelayer-is-slow-and-produces-errors/m-p/504246#M46816</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Have you tried using ONDEMAND mode? Even though you only have 17 records, you're using polygons and I'm guessing those are pretty detailed geometries. Loading a couple of MB of geometry would be plenty to cause what you're describing in IE.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Since you're using 2.8, ONDEMAND mode will generalize features on the fly for the map's current zoom level and feature geometry will be updated as the map zoom level changes. SNAPSHOT mode does not do this and retrieves each feature's full geometry. Using ONDEMAND, you should see a performance improvement in all browsers, not just IE.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jun 2012 13:40:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/adding-featurelayer-is-slow-and-produces-errors/m-p/504246#M46816</guid>
      <dc:creator>derekswingley1</dc:creator>
      <dc:date>2012-06-20T13:40:59Z</dc:date>
    </item>
    <item>
      <title>Re: adding featurelayer is slow and produces errors for ie</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/adding-featurelayer-is-slow-and-produces-errors/m-p/504247#M46817</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Yes, I first used on demand mode while I was coding. But with it, there were actually no features being rendered (all browsers), only snapshot modes renders them.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Instead of a loop, I tried loading each FeatureLayer individually (while not rendering the others), just to test if each can be displayed. The results indicate that those FeatureLayers not rendered in the picture are just the ones causing the problem in IE: not rendering and causing the performance issue.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; I can't figure out what special about these features that makes IE unable to draw them.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jun 2012 22:02:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/adding-featurelayer-is-slow-and-produces-errors/m-p/504247#M46817</guid>
      <dc:creator>Egan_LouisFajardo</dc:creator>
      <dc:date>2012-06-20T22:02:25Z</dc:date>
    </item>
  </channel>
</rss>

