Is it Possible to get prop_id for each Parcels selected in a buffer results, so I can pass them to SQL query, for example if the buffer return 10 parcels I need to get all the prop_id for the 10 parcels..
_showBuffer: function(features){ $('.results.multipleBuffer').hide(); var bufferSymbol = symbols.buffer; map.graphics.clear(); if (features.length > 0) { var graphic = new Graphic(features[0], bufferSymbol); map.graphics.add(graphic); queryTask = new QueryTask(config.mapServices.dynamic + "/" + config.parcelLayerID); var bufferQuery = new Query(); bufferQuery.outFields = ["*"]; bufferQuery.returnGeometry = true; bufferQuery.geometry = features[0]; queryTask.execute(bufferQuery).then(lang.hitch( this, function (fset) { var bufferFeatures = fset.features; console.log(bufferFeatures); this._createTable(bufferFeatures); //console.log(bufferFeatures); navEvent('point'); if (fset.features.length > 0) { var allGraphics = array.map(fset.features, function (feature) { return feature; }); unionExtent = graphicsUtils.graphicsExtent(allGraphics); map.setExtent(unionExtent.expand(1.5)); } })); } },
Solved! Go to Solution.
Husham,
You are already looping through the results so it would simply be something like this:
if (fset.features.length > 0) { var Gids = []; var allGraphics = array.map(fset.features, function (feature) { Gids.push(feature.attributes.prop_id); return feature; }); unionExtent = graphicsUtils.graphicsExtent(allGraphics); map.setExtent(unionExtent.expand(1.5)); } //Then you use the Gids array to populate your SQL query i.e. var sqlText = "Select * from TableX Where FieldX IN (" + Gids.join() + ")";
Husham,
Sure you can. You already have the graphics that are selected based on intersecting the buffer(s). So you would loop through the fset.features and once you have a single feature (i.e. var feat = fset.features😉 then you would get that features attributes property and then the field you are interested in (i.e. fset.features[0].attributes.prop_id).
Thank you Robert, Could you please provide code sample for the loop.
Regards
Husham,
You are already looping through the results so it would simply be something like this:
if (fset.features.length > 0) { var Gids = []; var allGraphics = array.map(fset.features, function (feature) { Gids.push(feature.attributes.prop_id); return feature; }); unionExtent = graphicsUtils.graphicsExtent(allGraphics); map.setExtent(unionExtent.expand(1.5)); } //Then you use the Gids array to populate your SQL query i.e. var sqlText = "Select * from TableX Where FieldX IN (" + Gids.join() + ")";
Robert,
That is really great Help.
Thank you