var map; var findTask, findParams; function init(){ map = new esri.Map("map") var basemap = new esri.layers.ArcGISDynamicMapServiceLayer("http://myserver/ArcGIS/rest/services/Basemap/MapServer"); map.addLayer(basemap); //Create Find Task using Post code layer findTask = new esri.tasks.FindTask("http://myserver/ArcGIS/rest/services/Basemap/MapServer/"); //Create the find parameters findParams = new esri.tasks.FindParameters(); findParams.returnGeometry = true; findParams.layerIds = [0]; findParams.searchFields = ["NAME"]; findParams.outSpatialReference = map.spatialReference; } function doFind(){ //Set the search text to the value in the box findParams.searchText = dojo.byId("name").value; findTask.execute(findParams, showResults); } function showResults(results){ map.graphics.clear(); var symbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_DIAMOND, 10, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0, 0, 0]), 1), new dojo.Color([255, 255, 0, 1])); //Create items array var items = []; for (var i = 0, il = results.length; i < il; i++) { items.push(results.feature.attributes); //append each attribute list as item in store var graphic = results.feature; graphic.setSymbol(symbol); map.graphics.add(graphic); } for (var i = 0, il = map.graphics.graphics.length; i < il; i++) { var currentGraphic = map.graphics.graphics; } extent = pointToExtent(map, currentGraphic.geometry.x, currentGraphic.geometry.y, 6) map.setExtent(extent); } function pointToExtent(map, pointX, pointY, toleranceInPixel) { var pixelWidth = map.extent.getWidth() / map.width; var toleraceInMapCoords = toleranceInPixel * pixelWidth; return new esri.geometry.Extent( pointX - toleraceInMapCoords, pointY - toleraceInMapCoords, pointX + toleraceInMapCoords, pointY + toleraceInMapCoords, map.spatialReference ); } dojo.addOnLoad(init);
Hi David,I believe the problem is the extent is wrong when you try to zoom to the feature. Try the following instead:var map; var findTask, findParams; function init(){ map = new esri.Map("map") var basemap = new esri.layers.ArcGISDynamicMapServiceLayer("http://myserver/ArcGIS/rest/services/Basemap/MapServer"); map.addLayer(basemap); //Create Find Task using Post code layer findTask = new esri.tasks.FindTask("http://myserver/ArcGIS/rest/services/Basemap/MapServer/"); //Create the find parameters findParams = new esri.tasks.FindParameters(); findParams.returnGeometry = true; findParams.layerIds = [0]; findParams.searchFields = ["NAME"]; findParams.outSpatialReference = map.spatialReference; } function doFind(){ //Set the search text to the value in the box findParams.searchText = dojo.byId("name").value; findTask.execute(findParams, showResults); } function showResults(results){ map.graphics.clear(); var symbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_DIAMOND, 10, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([0, 0, 0]), 1), new dojo.Color([255, 255, 0, 1])); //Create items array var items = []; for (var i = 0, il = results.length; i < il; i++) { items.push(results.feature.attributes); //append each attribute list as item in store var graphic = results.feature; graphic.setSymbol(symbol); map.graphics.add(graphic); } for (var i = 0, il = map.graphics.graphics.length; i < il; i++) { var currentGraphic = map.graphics.graphics; } extent = pointToExtent(map, currentGraphic.geometry.x, currentGraphic.geometry.y, 6) map.setExtent(extent); } function pointToExtent(map, pointX, pointY, toleranceInPixel) { var pixelWidth = map.extent.getWidth() / map.width; var toleraceInMapCoords = toleranceInPixel * pixelWidth; return new esri.geometry.Extent( pointX - toleraceInMapCoords, pointY - toleraceInMapCoords, pointX + toleraceInMapCoords, pointY + toleraceInMapCoords, map.spatialReference ); } dojo.addOnLoad(init);The function 'pointToExtent' will calculate the extent based off of the selected graphics X and Y coordinates.
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.