I am trying to select highlight features and zoom to selected features layer extent.My code below runs but doesn't highlight any feature.
on(dom.byId("try"), "click", function () { 
 var queryTask = new QueryTask("http://localhost:6080/arcgis/rest/services/RAEC/MapServer/12");
//build query filter
 var que = new Query();
 que.returnGeometry = true;
 que.outFields = ["FeederID", "OBJECTID"];
 que.outSpatialReference = { "wkid": 32640 };
 que.where = "FeederID<> ''";
 symbol = new SimpleMarkerSymbol();
 symbol.setStyle(SimpleMarkerSymbol.STYLE_SQUARE);
 symbol.setSize(10);
 symbol.setColor(new Color([255,255,0,0.5]));
 queryTask.execute(que,showResults);
 function showResults(featureSet) {
 
 
map.graphics.clear();
var resultFeatures = featureSet.features;
for (var i=0, il=resultFeatures.length; i<il; i++) {
 var graphic = resultFeatures;
 graphic.setSymbol(symbol); 
 map.graphics.add(graphic);
 }
 }
 });
Solved! Go to Solution.
OK, That is what does not make sense then.
      query = new Query();
      query.returnGeometry = true;
      query.outFields = ["FeederID"];
      query.outSpatialReference = map.spatialReference;line 2 and line 4 should cause the returned queries geometry to be in the maps spatial reference (WKID 102100).
You could try to manually set it:
query.outSpatialReference = {"wkid": 102100};
					
				
			
			
				
			
			
				
			
			
				
			
			
			
			
			
		Sibghat,
Have you placed a break point or a console statement in the showResults function to see if you are getting results from your query?
Yes query is running fine and passing geometry object, attribute object and graphics symbols.
Dear Robert,
I have make a new html with query.it is running and showing features without adding basemap. when i add
basemap: "topo",
center: [58.871192 , 20.646328],
zoom: 12 
The query still runs and results are shown in different area .Something with projection is the error.Please guide
<!DOCTYPE html>
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 
 <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
 <link rel="stylesheet" href="https://js.arcgis.com/3.20/dijit/themes/claro/claro.css">
 
 <link rel="stylesheet" href="https://js.arcgis.com/3.20/esri/css/esri.css">
 <style>
 html, body { 
 height: 100%; 
 width: 100%; 
 margin: 0; 
 padding: 0; 
 }
.claro .dijitContentPane {
 font-family: "Lucida Grande","Segoe UI","Arial",sans-serif;
 font-weight: normal;
 font-size: small;
 }
 </style>
<script src="https://js.arcgis.com/3.20/"></script>
 <script>
 var map;
 require([
 "esri/map",
 "esri/layers/ArcGISDynamicMapServiceLayer",
 "esri/tasks/QueryTask",
 "esri/tasks/query",
 "esri/symbols/SimpleMarkerSymbol",
 "esri/InfoTemplate",
 "dojo/_base/Color",
 "dojo/dom",
 "dojo/on",
 "dojo/domReady!"
], function(Map, ArcGISDynamicMapServiceLayer, QueryTask, Query, SimpleMarkerSymbol, InfoTemplate, Color, dom, on) {
 //create map and add layer
 map = new Map("mapDiv",{
 basemap: "topo",
 center: [58.871192 , 20.646328],
 zoom: 12
 });
 var layer = new ArcGISDynamicMapServiceLayer(
 "http://localhost:6080/arcgis/rest/services/RAEC/MapServer");
 map.addLayer(layer);
//initialize query task
 queryTask = new QueryTask("http://localhost:6080/arcgis/rest/services/RAEC/MapServer/12");
//initialize query
 query = new Query();
 query.returnGeometry = true;
 query.outFields = ["FeederID"];
//initialize InfoTemplate
 infoTemplate = new InfoTemplate("${FeederID}", "Name : ${FeederID}<br/> ");
//create symbol for selected features
 symbol = new SimpleMarkerSymbol();
 symbol.setStyle(SimpleMarkerSymbol.STYLE_SQUARE);
 symbol.setSize(10);
 symbol.setColor(new Color([255,255,0,0.5]));
//write "Get Details" button's click event 
 on(dom.byId("runQuery"), "click", executeQueryTask);
 
 
 function executeQueryTask() {
 //set query based on what user typed in for population;
 query.where = "FeederID<> ''";
 
 //execute query
 queryTask.execute(query,showResults);
 function showResults(featureSet) {
 //remove all graphics on the maps graphics layer
 map.graphics.clear();
//Performance enhancer - assign featureSet array to a single variable.
 var resultFeatures = featureSet.features;
//Loop through each feature returned
 for (var i=0, il=resultFeatures.length; i<il; i++) {
 //Get the current feature from the featureSet.
 //Feature is a graphic
 var graphic = resultFeatures;
 graphic.setSymbol(symbol);
//Set the infoTemplate.
 graphic.setInfoTemplate(infoTemplate);
//Add graphic to the map graphics layer.
 map.graphics.add(graphic);
 }
}
}
});
 </script>
<body>
 <br/>
 
 <input type="button" value="Get Details" id="runQuery" />
 <div id="mapDiv" style="width:600px; height:600px; border:1px solid #000;"></div>
 
</body>
</html>
Sibghat,
Just add this line with your other query properties:
query.outSpatialReference = map.spatialReference;
					
				
			
			
				
			
			
				
			
			
			
			
			
			
		i have already tried both but no success.
query.outSpatialReference={wkid :"32640"}; my map service wkid
query.outSpatialReference = map.spatialRefernce;
Resort Robert would know better than I would, but I'm wondering if it is a spelling error/typo
try
query.outSpatialReference = map.spatialReference;
Also, I would add spaces around your = in the first line.
edit. Talking about typos...I just noticed my iPad had "auto corrected" your name Robert.
Sibghat,
Rebecca is correct I made a spelling error in my reply previously (I have since edited it). It should be as Rebecca states.
Now getting this error
Map: Geometry (wkid: 32640) cannot be converted to spatial reference of the map (wkid: 102100)
i was thinking to change my code using feature selection.
Sibghat,
Based on this code:
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
  <link rel="stylesheet" href="https://js.arcgis.com/3.20/dijit/themes/claro/claro.css">
  <link rel="stylesheet" href="https://js.arcgis.com/3.20/esri/css/esri.css">
  <style>
    html,
    body {
      height: 100%;
      width: 100%;
      margin: 0;
      padding: 0;
    }
    .claro .dijitContentPane {
      font-family: "Lucida Grande", "Segoe UI", "Arial", sans-serif;
      font-weight: normal;
      font-size: small;
    }
  </style>
  <script src="https://js.arcgis.com/3.20/"></script>
  <script>
    var map;
    require([
      "esri/map",
      "esri/layers/ArcGISDynamicMapServiceLayer",
      "esri/tasks/QueryTask",
      "esri/tasks/query",
      "esri/symbols/SimpleMarkerSymbol",
      "esri/InfoTemplate",
      "dojo/_base/Color",
      "dojo/dom",
      "dojo/on",
      "dojo/domReady!"
    ], function(Map, ArcGISDynamicMapServiceLayer, QueryTask, Query, SimpleMarkerSymbol, InfoTemplate, Color, dom, on) {
      //create map and add layer
      map = new Map("mapDiv", {
        basemap: "topo",
        center: [58.871192, 20.646328],
        zoom: 12
      });
      var layer = new ArcGISDynamicMapServiceLayer(
        "http://localhost:6080/arcgis/rest/services/RAEC/MapServer");
      map.addLayer(layer);
      
      //initialize query task
      queryTask = new QueryTask("http://localhost:6080/arcgis/rest/services/RAEC/MapServer/12");
      
      //initialize query
      query = new Query();
      query.returnGeometry = true;
      query.outFields = ["FeederID"];
      query.outSpatialReference = map.spatialReference;
      
      //initialize InfoTemplate
      infoTemplate = new InfoTemplate("${FeederID}", "Name : ${FeederID}<br/> ");
      
      //create symbol for selected features
      symbol = new SimpleMarkerSymbol();
      symbol.setStyle(SimpleMarkerSymbol.STYLE_SQUARE);
      symbol.setSize(10);
      symbol.setColor(new Color([255, 255, 0, 0.5]));
      
      //write "Get Details" button's click event
      on(dom.byId("runQuery"), "click", executeQueryTask);
      
      function executeQueryTask() {
        //set query based on what user typed in for population;
        query.where = "FeederID<> ''";
        //execute query
        queryTask.execute(query, showResults);
        function showResults(featureSet) {
          //remove all graphics on the maps graphics layer
          map.graphics.clear();
          //Performance enhancer - assign featureSet array to a single variable.
          var resultFeatures = featureSet.features;
          //Loop through each feature returned
          for (var i = 0, il = resultFeatures.length; i < il; i++) {
            //Get the current feature from the featureSet.
            //Feature is a graphic
            var graphic = resultFeatures[i];
            graphic.setSymbol(symbol);
            //Set the infoTemplate.
            graphic.setInfoTemplate(infoTemplate);
            //Add graphic to the map graphics layer.
            map.graphics.add(graphic);
          }
        }
      }
    });
  </script>
  <body>
    <br/>
    <input type="button" value="Get Details" id="runQuery" />
    <div id="mapDiv" style="width:600px; height:600px; border:1px solid #000;"></div>
  </body>
</html>Your Map would be in WKID 102100, because you specify the maps basemap as topo. Now with query.outSpatialReference = map.spatialReference; this will cause your query results to return in WKID 102100 as well so the graphics should appear in the correct location.
Are you seeing something different than this?