function getLocRes(results) { //map.graphics.clear(); var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([80, 0, 0]), 2), new dojo.Color([80, 0, 0, 0.5])); var combinedExtent = new esri.geometry.Extent(); console.log("er",results.features.length); for (var i = 0;i < results.features.length; i++) {console.log("i=",i); var polyGraphic = new esri.Graphic(results.features, symbol); console.log("i=",polyGraphic); polyGraphic.setSymbol(symbol); //map.graphics.add(graphic); } combinedExtent = esri.graphicsExtent(results.features); map.setExtent(combinedExtent, true); }
dojo.require("dijit.layout.BorderContainer"); dojo.require("dijit.layout.ContentPane"); dojo.require("esri.map"); dojo.require("esri.dijit.Popup"); dojo.require("esri.dijit.Legend"); dojo.require("esri.layers.agsdynamic"); dojo.require("esri.layers.ArcGISTiledMapServiceLayer"); dojo.require("dijit.dijit"); dojo.require("esri.tasks.find");//search dojo.require("esri.arcgis.utils"); dojo.require("esri.dijit.Print"); dojo.require("dojox.grid.DataGrid"); dojo.require("dojo.data.ItemFileReadStore"); dojo.require("dijit.form.Button"); dojo.require("esri.tasks.query"); dojo.require("esri.dijit.Scalebar"); dojo.require("esri.graphic"); dojo.require("esri.symbol");
my guess is that you are trying to do the query before the map finishes loading. Try moving your query.execute into a map.on layers-add-result event
that is why the alert makes it work. It is basically waiting, giving the map enough time to load
map.on("layers-add-result", queryTask.execute(query, getLocRes, function(error){console.log("error: " + error.message);}));
function getLocRes(results) { map.graphics.clear(); var symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([80, 0, 0]), 2), new dojo.Color([80, 0, 0, 0.5])); var combinedExtent = new esri.geometry.Extent(); for (var i = 0;i < results.features.length; i++){ var polyGraphic = results.features; polyGraphic.setSymbol(symbol); map.graphics.add(polyGraphic); } combinedExtent = esri.graphicsExtent(results.features); map.setExtent(combinedExtent, true); }
var polyGraphic = new esri.Graphic(results.features, symbol); map.graphics.add(polyGraphic);
dojo.connect (queryTask, "onComplete", getLocRes);
I think you should be waiting for the queryTask to complete, not the map add layers event. All my examples I have handy are in AMD style, but you should be able to find some examples that are something likedojo.connect (queryTask, "onComplete", getLocRes);
Then in the line to execute the query, you won't include the results handler, you'll just run queryTask.execute(query);