if (evt.addresses.length > 0) { alert('there were results'); } else { alert('there were no results'); }
var h = 0; for( i = 0, i < h, i++){ //code will never get here }
if(evt.addresses){ //results exist }else{ //do nothing }
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!--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>Find Address</title> <link rel="stylesheet" href="http://js.arcgis.com/3.9/js/dojo/dijit/themes/claro/claro.css"> <link rel="stylesheet" href="http://js.arcgis.com/3.9/js/esri/css/esri.css"> <style> html, body { height: 100%; width: 100%; margin: 0; padding: 0; } #map{ padding:0; border:solid 1px #343642; margin:5px 5px 5px 0px; } #leftPane{ width:20%; border-top: solid 1px #343642; border-left: solid 1px #343642; border-bottom: solid 1px #343642; margin:5px 0px 5px 5px; color: #343642; font:100% Georgia,"Times New Roman",Times,serif; /*letter-spacing: 0.05em;*/ } </style> <script src="http://js.arcgis.com/3.9/"></script> <script> var map, locator; require([ "esri/map", "esri/tasks/locator", "esri/graphic", "esri/InfoTemplate", "esri/symbols/SimpleMarkerSymbol", "esri/symbols/Font", "esri/symbols/TextSymbol", "dojo/_base/array", "esri/Color", "dojo/number", "dojo/parser", "dojo/dom", "dijit/registry", "dijit/form/Button", "dijit/form/Textarea", "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dojo/domReady!" ], function( Map, Locator, Graphic, InfoTemplate, SimpleMarkerSymbol, Font, TextSymbol, arrayUtils, Color, number, parser, dom, registry ) { parser.parse(); map = new Map("map", { basemap: "streets", center: [-93.5, 41.431], zoom: 5 }); locator = new Locator("http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer"); locator.on("address-to-locations-complete", showResults); // listen for button click then geocode registry.byId("locate").on("click", locate); map.infoWindow.resize(200,125); function locate() { map.graphics.clear(); var address = { "SingleLine": dom.byId("address").value }; locator.outSpatialReference = map.spatialReference; var options = { address: address, outFields: ["Loc_name"] } locator.addressToLocations(options); } function showResults(evt) { var candidate; var symbol = new SimpleMarkerSymbol(); var infoTemplate = new InfoTemplate( "Location", "Address: ${address}<br />Score: ${score}<br />Source locator: ${locatorName}" ); symbol.setStyle(SimpleMarkerSymbol.STYLE_SQUARE); symbol.setColor(new Color([153,0,51,0.75])); var geom; arrayUtils.every(evt.addresses, function(candidate) { console.log(candidate.score); // NEW if (evt.addresses.length > 0) { console.log(candidate.location); var attributes = { address: candidate.address, score: candidate.score, locatorName: candidate.attributes.Loc_name }; alert('results!'); geom = candidate.location; var graphic = new Graphic(geom, symbol, attributes, infoTemplate); //add a graphic to the map at the geocoded location map.graphics.add(graphic); //add a text symbol to the map listing the location of the matched address. var displayText = candidate.address; var font = new Font( "16pt", Font.STYLE_NORMAL, Font.VARIANT_NORMAL, Font.WEIGHT_BOLD, "Helvetica" ); var textSymbol = new TextSymbol( displayText, font, new Color("#666633") ); textSymbol.setOffset(0,8); map.graphics.add(new Graphic(geom, textSymbol)); return false; //break out of loop after one candidate with score greater than 80 is found. } //NEW else { alert('no results'); } }); if ( geom !== undefined ) { map.centerAndZoom(geom, 12); } } }); </script> </head> <body class="claro"> <div id="mainWindow" data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'sidebar', gutters:false" style="width:100%; height:100%;"> <div id="leftPane" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'left'"> Enter an address then click the locate button to use a sample address locator to return the location for street addresses in the United States. <br> <textarea type="text" id="address"/>380 New York St, Redlands</textArea> <br> <button id="locate" data-dojo-type="dijit/form/Button">Locate</button> </div> <div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"> </div> </div> </body> </html>
Your if/else is inside your loop that uses evt.addresses as the parameter.Since evt.addresses doesn't have any candidates when there are no results, the loop never fires.evt.addresses.length will always be greater than 1 inside your loop. var h = 0; for( i = 0, i < h, i++){ //code will never get here }
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.