I have tried a few ways to activate my buffer query with a button, but (being a newbie), I have failed. The buffer I have set up works, but since I'm also going to have an identify button on the page, I need to have the user activate the buffer query with a button as well. Otherwise the buffer will run everytime the user clicks to identify a feature. I know how to toggle an identify task off and on, but I can't figure out how to control the buffer. Anyhelp would be appreciated. Here's the code<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=7" /><!--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>QueryTask with query geometry from another task</title><link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.1/js/dojo/dijit/themes/claro/claro.css"><script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.1"></script><script type="text/javascript">dojo.require("esri.map");dojo.require("esri.tasks.query");dojo.require("esri.tasks.geometry");var bufferqueryTask;/*Initialize map, buffer, & query params*/function init() {var startExtent = new esri.geometry.Extent({"xmin":-28364141.57017,"ymin":-2803495.15887,"xmax":12597044.415,"ymax":21320884.31716,"spatialReference":{"wkid":3089}});var map = new esri.Map("mapDiv", {extent:startExtent, wrapAround180:true});//listen for when map is loaded and then add query functionalitydojo.connect(map, "onLoad", initFunctionality);dojo.connect(map, "onLoad", function() { map.disableDoubleClickZoom();});//after map loads, connect to listen to mouse move & drag events dojo.connect(map, "onMouseMove", showCoordinates);var streetMap = new esri.layers.ArcGISDynamicMapServiceLayer("http://dingo.gapanalysisprogram.com/ArcGIS/rest/services/PADUS/PADUS_status/MapServer");map.addLayer(streetMap);var gap = new esri.layers.ArcGISDynamicMapServiceLayer("http://dingo.gapanalysisprogram.com/ArcGIS/rest/services/PADUS/Ancillary/MapServer");map.addLayer(gap);}function initFunctionality(map) {//identify proxy page to use if the toJson payload to the geometry service is greater than 2000 characters.//If this null or not available the buffer operation will not work. Otherwise it will do a http post to the proxy.//esriConfig.defaults.io.proxyUrl = "/arcgisserver/apis/javascript/proxy/proxy.ashx";//esriConfig.defaults.io.alwaysUseProxy = false;//esriConfig.defaults.io.proxyUrl = "/arcgisserver/proxy/proxy.ashx";//esriConfig.defaults.io.proxyUrl = "http://www.gap.uidaho.edu/proxy_ags.jsp";esriConfig.defaults.io.proxyUrl = "http://dingo.gapanalysisprogram.com/proxy/proxy.ashx";//esri.config.defaults.io.proxyUrl = "http://www.gap.uidaho.edu/proxy.php";esriConfig.defaults.io.alwaysUseProxy = false;//Geometry Service Endpointvar gsvc = new esri.tasks.GeometryService("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");bufferqueryTask = new esri.tasks.QueryTask("http://dingo.gapanalysisprogram.com/ArcGIS/rest/services/PADUS/PADUS_status/MapServer/0");// Queryvar bufferquery = new esri.tasks.Query();// +++++Listen for map onClick event+++++dojo.connect(map, "onClick", function(evt) {map.graphics.clear();var params = new esri.tasks.BufferParameters();params.geometries = [ evt.mapPoint ];// Buffer in linear units such as meters, km, miles etc.params.distances = [ dojo.byId('bufferDistance').value ];params.unit = esri.tasks.GeometryService.UNIT_STATUTE_MILE;params.bufferSpatialReference = new esri.SpatialReference({"wkid": 3089});params.outSpatialReference = new esri.SpatialReference({"wkid": 3089});gsvc.buffer(params);dojo.byId('messages').innerHTML = "<b>Creating Buffer Using Geometry Service...</b>";});// +++++Listen for GeometryService onBufferComplete event+++++dojo.connect(gsvc, "onBufferComplete", function(geometries) {var symbol = new esri.symbol.SimpleFillSymbol("none", new esri.symbol.SimpleLineSymbol("dashdot", new dojo.Color([255,0,0]), 2), new dojo.Color([255,255,0,0.25]));var graphic = new esri.Graphic(geometries[0],symbol);map.graphics.add(graphic);bufferquery.returnGeometry = true;bufferquery.outFields = ["P_Des_Nm","P_Loc_Nm","Own_Name","Mang_Name"];bufferquery.outSpatialReference = map.spatialReference;bufferquery.geometry = geometries[0];//query.where = "quadrangle_name='Adairville'"bufferqueryTask.execute(bufferquery);dojo.byId('messages').innerHTML = "<b>Executing Query with Result Buffer Geometry...</b>";});// +++++Listen for QueryTask executecomplete event+++++dojo.connect(bufferqueryTask, "onComplete", function(fset) {//create symbol for selected featuresvar symbol = new esri.symbol.SimpleMarkerSymbol();symbol.style = esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE;symbol.setSize(8);symbol.setColor(new dojo.Color([255,255,0,0.5]));//var infoTemplate = new esri.InfoTemplate("Block: ${BLOCK}", "${*}");var resultFeatures = fset.features;for (var i=0, il=resultFeatures.length; i<il; i++) {console.log(resultFeatures);var graphic = resultFeatures;graphic.setSymbol(symbol);map.graphics.add(graphic);}var pareas = returnRecordNums(fset);var r = "";r = "<b>The protected areas within the buffer are <i>" + pareas + "</i>.</b>";dojo.byId('messages').innerHTML = r;});}function returnRecordNums(fset){ var features = fset.features;var pas = "";for (var x = 0; x < features.length; x++) {pas = pas + ", " + features.attributes['P_Des_Nm'];}return pas;} function showCoordinates(evt) { //get mapPoint from event var mp = evt.mapPoint; //display mouse coordinates dojo.byId("info").innerHTML = mp.x + ", " + mp.y; }dojo.addOnLoad(init);</script></head><body class="claro">Zoom to area and click on map to select protected areas within the buffered circle.<br/>Buffer distance (in miles): <input type="text" id="bufferDistance" value="1" size="5" onkeydown="if (event.keyCode == 13) document.getElementById('btnSearch').click()"/> <form action=""> Buffer distance : <input type="text" id="bufferDistance" value="1" /> <input type="button" value="Get Details"onclick="execute(dojo.byId('b').value);" /> </form><div id="job"></div> <div id="mapDiv" style="width: 850px; height:500px; position:relative;"> <span id="info" style="position:absolute; right:25px; bottom:5px; color:#000; z-index:50;"></span> </div> <span id="messages"></span></body></html>
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.