public static void OutputGeocodeResponses(GeocodeResponse gr)
{
Console.WriteLine("**************Begin Response*************");
if (gr.HasCandidates)
{
foreach (GeocodeCandidate gc in gr.Candidates)
{
Console.WriteLine("Standardized Address: " + gc.StandardizedAddress);
Console.WriteLine("Address: " + gc.Address);
Console.WriteLine("City: " + gc.City);
Console.WriteLine("State: " + gc.State);
Console.WriteLine("PostalCode: " + gc.PostalCode);
Console.WriteLine("Match Score: " + gc.MatchScore);
Console.WriteLine("Match Type: " + gc.MatchType);
Console.WriteLine("X,Y: " + gc.Longitude + ", " + gc.Latitude);
Console.WriteLine("Additional Data: " + gc.RawData);
Regex parsableAddressParts = new Regex(@"^((?<address>\d{1,}(\D|\s1/2)?(?:\s?-\s?\d{1,})*\s(?>[^#,]+)(?>#\s*.+)?),)?\s*((?<zip>\d{5}(-\d{4})?)\s*,)?\s*(?<city>[^,]+)\s*,(\s*(Town Of)\s*,)?\s*(?<state>[A-Z]{2})(\s+(?<zip2>\d{5}(-\d{4})?))?", RegexOptions.IgnoreCase);
string address = gc.StandardizedAddress;
if (!string.IsNullOrEmpty(address) && parsableAddressParts.IsMatch(address))
{
Match m = parsableAddressParts.Match(address);
GroupCollection groups = m.Groups;
Console.WriteLine("\t" + groups["address"].Value.Trim());
Console.WriteLine("\t" + groups["city"].Value.Trim());
Console.WriteLine("\t" + groups["state"].Value.Trim());
Console.WriteLine("\t" + groups["zip"].Value.Trim());
}
Console.WriteLine("**********");
Console.WriteLine("");
}
}
else
{
Console.WriteLine("No Responses Received");
}
Console.WriteLine("**************End Response*************");
}