HI,
i am trying to highlight polygon and corresponding points.so i am trying to do some thing like:
var queryTask = new QueryTask("http://myserver/arcgisserver/rest/services/CRD/CRD2/MapServer/0");
var query = new Query();
query.geometry = event.mapPoint; //your district polygon geometry
query.outFields = ["*"];
query.returnGeometry = true;
//Execute task
queryTask.execute(query, showResults);
function showResults (results) {
var resultItems = [];
var resultCount = results.features.length;
for (var i = 0; i < resultCount; i++) {
var featureAttributes = results.features.attributes;
}
is it possible to pass polygon to query.geometry.if so how to do
Hi Veena,
Here is a JS Fiddle that can help you get started. You can select a polygon and the intersecting points will be selected.
i need to do it for user input
Can you elaborate? How is the user inputting a polygon? i.e. Draw toolbar?
no through drop down
Here is an example:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!--The viewport meta tag is used to improve the presentation and behavior of the samples on iOS devices--> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"> <title>Sample Map</title> <link rel="stylesheet" href="http://js.arcgis.com/3.15/dijit/themes/claro/claro.css"> <link rel="stylesheet" href="http://js.arcgis.com/3.15/esri/css/esri.css"> <style> html, body, #mapDiv { height: 100%; width: 100%; margin: 0; padding: 0; } </style> <script src="http://js.arcgis.com/3.15/"></script> <script> var map; require([ "esri/map", "esri/layers/FeatureLayer", "esri/graphic", "esri/tasks/query", "esri/symbols/SimpleMarkerSymbol", "esri/graphicsUtils", "esri/symbols/SimpleFillSymbol", "esri/symbols/SimpleLineSymbol", "esri/geometry/Polygon", "dojo/_base/Color", "dojo/dom", "dojo/on", "dojo/_base/array", "dojo/parser", "dijit/registry", "dijit/layout/ContentPane", "dijit/form/ComboBox", "dijit/form/Button", "dojo/domReady!" ], function( Map, FeatureLayer, Graphic, Query, SimpleMarkerSymbol, graphicsUtils, SimpleFillSymbol, SimpleLineSymbol, Polygon, Color, dom, on, array, parser, registry ) { parser.parse(); map = new Map("mapDiv", { basemap: "streets", center: [-81.8216, 28.9725], zoom: 8 }); var featureLayer = new FeatureLayer("https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/0", { mode: FeatureLayer.MODE_ONDEMAND }); var symbol = new SimpleMarkerSymbol( SimpleMarkerSymbol.STYLE_CIRCLE, 12, new SimpleLineSymbol( SimpleLineSymbol.STYLE_NULL, new Color([247, 34, 101, 0.9]), 1 ), new Color([207, 34, 171, 0.5]) ); featureLayer.setSelectionSymbol(symbol); var featureLayer2 = new FeatureLayer("https://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/2", { mode: FeatureLayer.MODE_ONDEMAND, outFields: ["*"] }) map.addLayers([featureLayer2, featureLayer]); var query = new Query(); query.where = "STATE_NAME ='Florida'"; featureLayer2.queryFeatures(query, function(featureSet) { registry.byId("search").on("click", doFind); var nameList = []; dojo.map(featureSet.features, function(feature) { nameList.push(feature.attributes.NAME); }); array.forEach(nameList, function(feature){ registry.byId("countyName").get('store').add({ name: feature}); }) }); var highlightSymbol = new SimpleFillSymbol( SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol( SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0]), 1), new Color([125, 125, 125, 0.35]) ); function doFind(evt){ var query = new Query(); query.where = "STATE_NAME = 'Florida' AND NAME = '" + dom.byId("countyName").value + "'"; /* var query = new Query(); query.geometry = highlightGraphic.geometry.getExtent();*/ featureLayer2.queryFeatures(query, showCounty); } function showCounty(response) { var feature; var features = response.features; console.log(features[0]); map.graphics.clear(); highlightGraphic = new Graphic(features[0].geometry, highlightSymbol); map.graphics.add(highlightGraphic); var resultExtent = graphicsUtils.graphicsExtent(features); map.setExtent(resultExtent.expand(2)); var query = new Query(); query.geometry = highlightGraphic.geometry.getExtent(); featureLayer.queryFeatures(query, selectInBuffer); } function selectInBuffer(response) { var feature; var features = response.features; var inBuffer = []; for (var i = 0; i < features.length; i++) { feature = features; if (highlightGraphic.geometry.contains(feature.geometry)) { inBuffer.push(feature.attributes[featureLayer.objectIdField]); } } var query = new Query(); query.objectIds = inBuffer; featureLayer.selectFeatures(query, FeatureLayer.SELECTION_NEW); } }); </script> </head> <body class="claro"> <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline'" style="width:100%;height:100%;margin:0;"> <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'" style="height:40px;"> County Name: <!--<input type="text" id="ownerName" size="60" value="Northern Girl" />--> <select id="countyName" data-dojo-type="dijit.form.ComboBox" style="width:200px;font-size:16px;" value="Select a County"></select> <button id="search" data-dojo-type="dijit.form.Button" type="button" data-dojo-attach-point="button" > Search </button> </div> <div id="mapDiv" data-dojo-props="region:'center'" data-dojo-type="dijit/layout/ContentPane" style="border:1px solid #000;"></div> </div> </body> </html>
here you have taken polygon from feature layers but i need to take it from dynamic layers