Trouble retrieving Candidate fields from Geocode Service

623
2
10-14-2011 08:01 AM
MatthewGerbrandt
New Contributor II
I�??ve got a Geocoding service that�??s working great for finding and displaying addresses out of a local SDE database.  For some reason, I�??m having trouble figuring out how to get the JavaScript syntax for returning all of the values that I need. 

The service properties list the Candidate fields as follows:

�?� Shape (Type: esriFieldTypeGeometry, Alias: Shape)
�?� Score (Type: esriFieldTypeDouble, Alias: Score)
�?� Match_addr (Type: esriFieldTypeString, Alias: Match_addr)
�?� House (Type: esriFieldTypeString, Alias: House)
�?� PreDir (Type: esriFieldTypeString, Alias: PreDir)
�?� PreType (Type: esriFieldTypeString, Alias: PreType)
�?� StreetName (Type: esriFieldTypeString, Alias: StreetName)
�?� SufType (Type: esriFieldTypeString, Alias: SufType)
�?� SufDir (Type: esriFieldTypeString, Alias: SufDir)
�?� City (Type: esriFieldTypeString, Alias: City)
�?� State (Type: esriFieldTypeString, Alias: State)
�?� ZIP (Type: esriFieldTypeString, Alias: ZIP)
�?� Ref_ID (Type: esriFieldTypeInteger, Alias: Ref_ID)
�?� User_fld (Type: esriFieldTypeString, Alias: User_fld)
�?� Addr_type (Type: esriFieldTypeString, Alias: Addr_type)

I�??m able to get the value for �??Score�?� to show up in the InfoTemplate object but for some reason, I�??m unable to grab the Match_addr value.  I�??ve got to be missing something obvious here in my syntax.  Any/all help is greatly appreciated. 
The relevant code snippit is below:

        function showResults(candidates) {
            var candidate;
            var symbol = new esri.symbol.SimpleMarkerSymbol();
            var infoTemplate = new esri.InfoTemplate("Location", "Address: ${Match_addr}<br />Score: ${score}<br />Source locator: ${locatorName}");

            symbol.setStyle(esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE);
            symbol.setColor(new dojo.Color([153, 0, 51, 0.75]));

            var geom;

            dojo.every(candidates, function(candidate) {
                console.log(candidate.score);
                if (candidate.score > 80) {
                    console.log(candidate.location);
                    var attributes = { address: candidate.Match_addr, score: candidate.score, locatorName: candidate.attributes.Ref_ID };
                    geom = candidate.location;
                    var graphic = new esri.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.Street;
                    var font = new esri.symbol.Font("16pt", esri.symbol.Font.STYLE_NORMAL, esri.symbol.Font.VARIANT_NORMAL, esri.symbol.Font.WEIGHT_BOLD, "Helvetica");

                    var textSymbol = new esri.symbol.TextSymbol(displayText, font, new dojo.Color("#666633"));
                    textSymbol.setOffset(0, 8);
                    map.graphics.add(new esri.Graphic(geom, textSymbol));
                    return false; //break out of loop after one candidate with score greater  than 80 is found. 
                }
            });
            if (geom !== undefined) {
                map.centerAndZoom(geom, 12);
            }

        }


Link to my service: http://restdata.umatilla.nsn.us/ArcGIS/rest/services/AddressLocatorNew/GeocodeServer/findAddressCand...

Thanks a million, folks!
0 Kudos
2 Replies
KellyHutchins
Esri Frequent Contributor
You can specify all (or some) of the fields you want to include using the outFields parameter. In this example all the fields will be returned:

  locator.addressToLocations(address,["*"]);
0 Kudos
MatthewGerbrandt
New Contributor II
Perfect - thank you very much!
0 Kudos