var map, tb; require([ "esri/map", "esri/toolbars/draw", "dojo/promise/all", "esri/symbols/SimpleMarkerSymbol", "esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleFillSymbol", "esri/symbols/PictureFillSymbol", "esri/symbols/CartographicLineSymbol", "esri/layers/FeatureLayer", "esri/graphic", "esri/tasks/query", "esri/tasks/QueryTask", "esri/InfoTemplate", "esri/Color", "dojo/dom", "dojo/on", "dojo/parser", "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dijit/layout/AccordionContainer", "dojo/domReady!"], function ( Map, Draw, All, SimpleMarkerSymbol, SimpleLineSymbol, SimpleFillSymbol, PictureFillSymbol, CartographicLineSymbol, FeatureLayer, Graphic, Query, QueryTask, InfoTemplate, Color, dom, on, parser, ArcGISDynamicMapServiceLayer) { parser.parse(); map = new Map("mapDiv", { // basemap: "streets", center: [-85.82966, 33.666494], zoom: 7 }); var baseMapLayer = new esri.layers.ArcGISTiledMapServiceLayer("https://gis/arcpub/rest/services/Basemap/StreetBaseMap/MapServer"); var DynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer("https://gismaps/arcpub/rest/services/CountyServices/Annexations/MapServer"); // var featureLayer1 = new FeatureLayer("https://gismaps/arcpub/rest/services/CountyServices/Annexations/MapServer/0"); map.addLayer(baseMapLayer, DynamicMapServiceLayer); map.on("load", initToolbar); // var featureLayer4 = new FeatureLayer({ // url: // "https://gismaps/arcpub/rest/services/CountyServices/Annexations/MapServer/0" //}); //map.add(featureLayer4); var featureLayer1 = new FeatureLayer("https://gismaps/arcpub/rest/services/CountyServices/Annexations/MapServer/0", { mode: FeatureLayer.MODE_SELECTION, infoTemplate: new InfoTemplate("Block: ${BLOCK}", "${*}"), outFields: ["POP2000", "HOUSEHOLDS", "HSE_UNITS", "TRACT", "BLOCK"] }); var featureLayer2 = new FeatureLayer("http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/1", { mode: FeatureLayer.MODE_SELECTION, infoTemplate: new InfoTemplate("Block Group: ${BLKGRP}", "${*}"), outFields: ["POP2000", "HOUSEHOLDS", "HSE_UNITS", "TRACT", "BLKGRP"] }); var featureLayer3 = new FeatureLayer("http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/2", { mode: FeatureLayer.MODE_SELECTION, infoTemplate: new InfoTemplate("County Name: ${NAME}", "${*}"), outFields: ["POP2000", "HOUSEHOLDS", "HSE_UNITS", "NAME"] }); map.addLayers([featureLayer1, featureLayer2, featureLayer3]); // markerSymbol is used for point and multipoint, see http://raphaeljs.com/icons/#talkq for more examples var markerSymbol = new SimpleMarkerSymbol(); markerSymbol.setPath("M16,4.938c-7.732,0-14,4.701-14,10.5c0,1.981,0.741,3.833,2.016,5.414L2,25.272l5.613-1.44c2.339,1.316,5.237,2.106,8.387,2.106c7.732,0,14-4.701,14-10.5S23.732,4.938,16,4.938zM16.868,21.375h-1.969v-1.889h1.969V21.375zM16.772,18.094h-1.777l-0.176-8.083h2.113L16.772,18.094z"); markerSymbol.setColor(new Color("#00FFFF")); // lineSymbol used for freehand polyline, polyline and line. var lineSymbol = new CartographicLineSymbol( CartographicLineSymbol.STYLE_SOLID, new Color([255, 0, 0]), 10, CartographicLineSymbol.CAP_ROUND, CartographicLineSymbol.JOIN_MITER, 5); // fill symbol used for extent, polygon and freehand polygon var fillSymbol = new SimpleFillSymbol(); function initToolbar() { tb = new Draw(map); tb.on("draw-end", addGraphic); // event delegation so a click handler is not // needed for each individual button on(dom.byId("info"), "click", function (evt) { if (evt.target.id === "info") { return; } var tool = evt.target.id.toLowerCase(); map.disableMapNavigation(); tb.activate(tool); }); } function addGraphic(evt) { //deactivate the toolbar and clear existing graphics tb.deactivate(); map.enableMapNavigation(); // figure out which symbol to use var symbol; if (evt.geometry.type === "point" || evt.geometry.type === "multipoint") { symbol = markerSymbol; } else if (evt.geometry.type === "line" || evt.geometry.type === "polyline") { symbol = lineSymbol; } else { symbol = fillSymbol; } map.graphics.add(new Graphic(evt.geometry, symbol)); queryMapService(evt.geometry); } function queryMapService(Geom) { var promises = []; var query = new Query(); query.returnGeometry = false; query.outFields = ["*"]; query.geometry = Geom; promises.push(featureLayer1.selectFeatures(query, FeatureLayer.SELECTION_NEW)); promises.push(featureLayer2.selectFeatures(query, FeatureLayer.SELECTION_NEW)); promises.push(featureLayer3.selectFeatures(query, FeatureLayer.SELECTION_NEW)); var allPromises = new All(promises); allPromises.then(function (r) { showResults(r); }); } function showResults(results) { var resultCount = results.length; console.log(resultCount); } });