Since feature layer will always lay on top of ArcGISDynamicMapServiceLayers, I tried to do the country coloring on the server side. It works just fine for three countries, once I specify four or more countries to the UniqueValueRenderer it fails. The rendering works fine until a fourth country is added to the UniqueValueRenderer. Any light into this mistery is most appreciated!
// one global for persistent app variables var app = {};
function init() { alert("Only three countries can be added to the renderer. The server side rendering fails when more are added"); map = new esri.Map("map", { extent: new esri.geometry.Extent({ "xmin": -2810436, "ymin": 3960049, "xmax": 4233999, "ymax": 7917653, "spatialReference": { "wkid": 102100} }) });
var defaultSymbol = new esri.symbol.SimpleFillSymbol().setStyle(esri.symbol.SimpleFillSymbol.STYLE_NULL); defaultSymbol.outline.setStyle(esri.symbol.SimpleLineSymbol.STYLE_NULL);
var renderer = new esri.renderer.UniqueValueRenderer(defaultSymbol, "iso_a3", ""); renderer.addValue('CZE', new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color('#71BF00'))); renderer.addValue('DEU', new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color('#71BF00'))); renderer.addValue('FRA', new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color('#71BF00')));
//only three countries can be added to the renderer. The server side rendering fails when more are added. // renderer.addValue('USA', new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color('#71BF00'))); // renderer.addValue('CHE', new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color('#71BF00')));
var optionsArray = []; var drawingOptions = new esri.layers.LayerDrawingOptions(); drawingOptions.renderer = renderer; optionsArray[0] = drawingOptions;
I'm recommending that because I see a 404 for the map image in dev tools when the renderer includes more than three countries (which makes the URL for the request longer).
I took that over (here internally) and it implemented it as you said and it worked out fine. Thanks a lot!
The issue that remains is that it does not work with the Internet Explorer (with all the other browsers it works properly). When I compare the tracing from the browsers I can see that when it works the browsers sends a request to https://www.comfone.com/arcgis/rest/services/country_outline/MapServer/export? (with is responded by the arcgisoutput directory from the server). But I couldn't find the same request using Internet Explorer. Did I miss something in my script that is required for IE, but not for the other browsers? Thanks!
var defaultSymbol = new esri.symbol.SimpleFillSymbol().setStyle(esri.symbol.SimpleFillSymbol.STYLE_NULL); defaultSymbol.outline.setStyle(esri.symbol.SimpleLineSymbol.STYLE_NULL);
var renderer = new esri.renderer.UniqueValueRenderer(defaultSymbol, "iso_a3", ""); renderer.addValue('USA', new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color('#DC001B'))); renderer.addValue('CAN', new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color('#DC001B'))); renderer.addValue('DEU', new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color('#DC001B'))); renderer.addValue('ITA', new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color('#DC001B'))); renderer.addValue('CHE', new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color('#DC001B')));