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.
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.