Select to view content in your preferred language

Set Feature Layer Selection Symbol

3609
2
Jump to solution
03-11-2013 11:42 AM
AlexGilvarry
Deactivated User
Hi,

I'm trying to add functionality to select a group of parcels as laid out in this example, and display queried information for those parcels in a popup info window. I've got it displaying the queried data in an infowindow correctly, and it highlights the correct parcel for the info being displayed, but I'm having issues highlighting every selected parcel. In the above example it sets the selection symbol with setSelectionSymbol(), but for whatever reason this isn't working for me, and I'm not exactly sure what I'm doing wrong.

I've included the parts of my code that are relevant to my problem, including parts that deal with toggling the parcel layer on and off in a legend.

Thank you for any help! If i can help clarify anything at all let me know!

 function init() {                //initialize popup window         var popup = new esri.dijit.Popup({         fillSymbol: new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255,0,0]), 2), new dojo.Color([255,255,0,0.25]))         }, dojo.create("div"));            //add geometry service from server         esri.config.defaults.geometryService = new esri.tasks.GeometryService("http://2501s-jjohnson:6080/arcgis/rest/services/Utilities/Geometry/GeometryServer");      //initalize map         app.map = new esri.Map("map", {           basemap : "satellite",           center : [-111.924531, 40.611871],           zoom : 13,           infoWindow: popup         });                  //query parcel and show info in popup window          function executeIdentifyTask(evt) {       var query = new esri.tasks.Query();           query.geometry = pointToExtent(app.map,evt.mapPoint,10);           var deferred = featureParcel.selectFeatures(query,esri.layers.FeatureLayer.SELECTION_NEW);           app.map.infoWindow.setFeatures([deferred]);           app.map.infoWindow.show(evt.mapPoint);           console.log(evt.mapPoint);                    }                  //trigger feature layer parcel query if parcels are turned on           function clickConnect(connect){         if(connect){           //perform the identify task on click            clickHandler = dojo.connect(app.map, "onClick", executeIdentifyTask);         }else{           //disconnect the click handler                 dojo.disconnect(clickHandler);               clickHandler = null;               }               }          //add parcel layer          var parcels = new esri.layers.ArcGISDynamicMapServiceLayer("http://2501s-jjohnson:6080/arcgis/rest/services/Parcels_UT/MapServer", {           id : 'parcels',           visible : false         });         parcelLayer.push({           layer : parcels,           title : 'Parcels'         });            //add parcel feature layer query info for popup window   var content = "<b>Address</b>: ${ADDR}" + "<br /><b>Owner Name</b>: ${OWNER}" + "<br /><b>Parcel ID</b>: ${APN}" + "<br /><b>City</b>: ${CITY}" + "<br /><b>Acres</b>: ${TOTAL_ACRES}"+ " <br /><a href='${COUNTY_LINK}' target='_blank'>County Assessor Site</a>"      var popUpTemplate = new esri.InfoTemplate("Parcel", content);               //add parcel feature layer         featureParcel = new esri.layers.FeatureLayer("http://2501s-jjohnson:6080/arcgis/rest/services/Parcels_UT/MapServer/0",{           mode: esri.layers.FeatureLayer.MODE_SELECTION,           outFields: ["*"],           infoTemplate:popUpTemplate         });          //set selection Symbol         var selectionSymbol = new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([255,255,0,0.5]));        selectionSymbol.setOutline(new esri.symbol.SimpleLineSymbol("solid", new dojo.Color([255,0,0]), 2));         featureParcel.setSelectionSymbol(selectionSymbol);                  //create legend         dojo.connect(app.map, 'onLayersAddResult', function(results) {           var legend = new esri.dijit.Legend({             map : app.map,             layerInfos : legendLayers           }, "retail");           legend.startup();         });         //add all layers to map         app.map.addLayers([parcels]);         //add layer arrays into  legend object   legendLayers["parcel"] = parcelLayer;            dojo.connect(app.map, 'onLayersAddResult', function(results) {          //for each layer array in legend object          for (var k in legendLayers){           //add legend check boxes for each layer           //to toggle layer visibility           dojo.forEach(legendLayers, function(layer) {             var layerName = layer.title;             var checkBox = new dijit.form.CheckBox({               name : "checkBox" + layer.layer.id,               value : layer.layer.id,               checked : layer.layer.visible,               onChange : function(evt) {                 var clayer = app.map.getLayer(this.value);                 clayer.setVisibility(!clayer.visible);                 this.checked = clayer.visible;                                 //toggle the feature layer parcel query                //parcelClick indicates whether the parcel layer is on                 if (this.value ==="parcels" && this.checked === true){                  clickConnect(true);                  parcelClick = true;                 } else if (this.value ==="parcels"){                  clickConnect(false);                  parcelClick = false;                 }               }             });              //add the check box and label to the table of contnents             dojo.place(checkBox.domNode, dojo.byId(k), "after");             var checkLabel = dojo.create('label', {               'for' : checkBox.name,               innerHTML : layerName             }, checkBox.domNode, "after");             dojo.place("<br />", checkLabel, "after");           });           }         });      dojo.connect(app.map, "onLoad", initSelectToolbar);            }                         function initSelectToolbar(map) {       selectionToolbar = new esri.toolbars.Draw(map);       var selectQuery = new esri.tasks.Query();              dojo.connect(selectionToolbar, "onDrawEnd", function(geometry) {         selectionToolbar.deactivate();         selectQuery.geometry = geometry;         var deferred = featureParcel.selectFeatures(selectQuery, esri.layers.FeatureLayer.SELECTION_NEW);         app.map.infoWindow.setFeatures([deferred]);         app.map.infoWindow.show();                });     }            function pointToExtent(map, point, toleranceInPixel) {        var pixelWidth = map.extent.getWidth() / map.width;        var toleraceInMapCoords = toleranceInPixel * pixelWidth;        return new esri.geometry.Extent( point.x - toleraceInMapCoords,                     point.y - toleraceInMapCoords,                     point.x + toleraceInMapCoords,                     point.y + toleraceInMapCoords,                     map.spatialReference );                                  }                 dojo.ready(init);
0 Kudos
1 Solution

Accepted Solutions
RahulMetangale1
Frequent Contributor
Hi Alex,

I have gone through the code, i think you forgot to add the featureParcel to the map.

Rahul

View solution in original post

0 Kudos
2 Replies
RahulMetangale1
Frequent Contributor
Hi Alex,

I have gone through the code, i think you forgot to add the featureParcel to the map.

Rahul
0 Kudos
AlexGilvarry
Deactivated User
Hi Alex,

I have gone through the code, i think you forgot to add the featureParcel to the map.

Rahul


That was the issue. Thanks!
0 Kudos