Is it possible to pass polygon to query.geometry

3270
6
01-31-2016 11:53 PM
veenahosur1
New Contributor II

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

0 Kudos
6 Replies
JakeSkinner
Esri Esteemed Contributor

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.

veenahosur1
New Contributor II

i need to do it for user input

0 Kudos
JakeSkinner
Esri Esteemed Contributor

Can you elaborate?  How is the user inputting a polygon?  i.e. Draw toolbar?

0 Kudos
veenahosur1
New Contributor II

no through drop down

0 Kudos
JakeSkinner
Esri Esteemed Contributor

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>
0 Kudos
veenahosur1
New Contributor II

here you have taken polygon from feature layers but i need to take it from dynamic layers

0 Kudos