I have a feature layer created from a feature collection similar to the sample. It works great:
var featureCollection = { "layerDefinition": null, "featureSet": { "features": [], "geometryType": "esriGeometryPoint" } }; featureCollection.layerDefinition = { "geometryType": "esriGeometryPoint", "objectIdField": "ObjectID", "drawingInfo": { "renderer": { "type": "simple", "symbol": { "type": "esriPMS", "url": "resources/images/ship.png", "contentType": "image/png", "width": 16, "height": 16 } } }, "fields": [{ "name": "ObjectID", "alias": "ObjectID", "type": "esriFieldTypeOID" }, { "name": "description", "alias": "Description", "type": "esriFieldTypeString" }, { "name": "title", "alias": "Title", "type": "esriFieldTypeString" }] };
I'd now like to change this from a simple renderer to a unique value renderer. Does anyone have an example that can get me started?
Thanks.
Solved! Go to Solution.
Glen,
Once you create your featureLayer from your featureCollection, try something like this:
var defaultSymbol = new SimpleMarkerSymbol().setStyle(SimpleMarkerSymbol.STYLE_CIRCLE); defaultSymbol.setColor(new Color([255, 0, 0, 0.25])); defaultSymbol.setSize("4.2"); var renderer = new UniqueValueRenderer(defaultSymbol, "symbolField"); renderer.addValue("0", new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 6, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0, 0.75]), 1), new Color([255, 0, 0, 0.5]))); renderer.addValue("1", new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 6, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([0, 71, 171, 0.75]), 1), new Color([0, 71, 171, 0.5]))); featureLayer.setRenderer(renderer);
In my example, I have a field named "symbolField" in a point featureLayer with either a "0" or "1" value. Based on these values, either a blue or red symbol renders in the map.
Glen,
Once you create your featureLayer from your featureCollection, try something like this:
var defaultSymbol = new SimpleMarkerSymbol().setStyle(SimpleMarkerSymbol.STYLE_CIRCLE); defaultSymbol.setColor(new Color([255, 0, 0, 0.25])); defaultSymbol.setSize("4.2"); var renderer = new UniqueValueRenderer(defaultSymbol, "symbolField"); renderer.addValue("0", new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 6, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0, 0.75]), 1), new Color([255, 0, 0, 0.5]))); renderer.addValue("1", new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 6, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([0, 71, 171, 0.75]), 1), new Color([0, 71, 171, 0.5]))); featureLayer.setRenderer(renderer);
In my example, I have a field named "symbolField" in a point featureLayer with either a "0" or "1" value. Based on these values, either a blue or red symbol renders in the map.
Worked like a charm, thanks Chris.