function GeoCode StreetAddress , CSZ --add1 , zip --Status Codes --"OK" indicates that no errors occurred; the address was successfully parsed and at least one geocode was returned. --"ZERO_RESULTS" indicates that the geocode was successful but returned no results. This may occur if the geocode was passed a non-existent address or a latlng in a remote location. --"OVER_QUERY_LIMIT" indicates that you are over your quota. --"REQUEST_DENIED" indicates that your request was denied, generally because of lack of a sensor parameter. --"INVALID_REQUEST"generally indicates that the query (address or latlng) is missing --Location Types --"ROOFTOP" indicates that the returned result is a precise geocode for which we have location information accurate down to street -- address precision. --"RANGE_INTERPOLATED" indicates that the returned result reflects an approximation (usually on a road) interpolated between two -- precise points (such as intersections). Interpolated results are generally returned when rooftop geocodes are unavailable -- for a street address. --"GEOMETRIC_CENTER" indicates that the returned result is the geometric center of a result such as a polyline (for example, a street) -- or polygon (region). --"APPROXIMATE" indicates that the returned result is approximate local gxml , txml , str1 , pos1 , add1 , I , str2 Local Geo put empty into Geo repeat with I = 1 to the number of lines in StreetAddress put offset ("#",line I of StreetAddress) into pos1 if pos1 <> 0 then put char 1 to (pos1-1) of line I of StreetAddress into line I of Streetaddress Replace " " with " " in line I of StreetAddress replace " " with "+" in line I of StreetAddress put Add1 && Line I of Streetaddress into Add1 end repeat delete char 1 in Add1 Replace " " with " " in CSZ replace " " with "+" in CSZ delete line 1 in gxml put revCreateXMLTree(gxml,true,true,false) into txml put revxmlnodecontents(txml,"GeocodeResponse/status") into geo["Status"] replace "OVER_" with "" in geo["Status"] if revxmlnodecontents(txml,"GeocodeResponse/status") = "OK" then if xmlnodecontents(txml,"GeocodeResponse/result/formatted_address") is not empty then \ put xmlnodecontents(txml,"GeocodeResponse/result/formatted_address") into Geo["FormattedAddress"] put xmlnodecontents(txml,"GeocodeResponse/result/partial_match") into Geo["PartialMatch"] repeat with I = 1 to revxmlnumberofchildren(txml,"/GeocodeResponse/result","address_component",1) switch revxmlnodecontents(txml,"GeocodeResponse/result/address_component[" & I & "]/type") Case "administrative_area_level_2" put revxmlnodecontents(txml,"GeocodeResponse/result/address_component[" & I & "]/long_name") into geo["County"] Break Case "administrative_area_level_3" put revxmlnodecontents(txml,"GeocodeResponse/result/address_component[" & I & "]/long_name") into geo["City"] Break Case "street_number" put revxmlnodecontents(txml,"GeocodeResponse/result/address_component[" & I & "]/long_name") into geo["StreetNumber"] Break Case "route" put revxmlnodecontents(txml,"GeocodeResponse/result/address_component[" & I & "]/long_name") into geo["Route"] Break Case "locality" put revxmlnodecontents(txml,"GeocodeResponse/result/address_component[" & I & "]/long_name") into geo["City"] Break Case "administrative_area_level_1" put revxmlnodecontents(txml,"GeocodeResponse/result/address_component[" & I & "]/long_name") into geo["StateName"] put revxmlnodecontents(txml,"GeocodeResponse/result/address_component[" & I & "]/short_name") into geo["State"] Break Case "Country" put revxmlnodecontents(txml,"GeocodeResponse/result/address_component[" & I & "]/long_name") into geo["Country"] Break Case "postal_code" put revxmlnodecontents(txml,"GeocodeResponse/result/address_component[" & I & "]/long_name") into geo["ZIP"] Break default --breakpoint break end switch end repeat put revXMLChildNames(txml,"/GeocodeResponse/result/geometry",comma,,false) into str1 repeat for each item nodename in str1 switch nodename Case "location" put revxmlnodecontents(txml,"GeocodeResponse/result/geometry/"&nodename&"/lat") into geo["Lat"]["Center"] put revxmlnodecontents(txml,"GeocodeResponse/result/geometry/"&nodename&"/lng") into geo["Lon"]["Center"] break Case "location_type" put revxmlnodecontents(txml,"GeocodeResponse/result/geometry/"&nodename) into geo["LocationType"] replace "RANGE_" with empty in geo["LocationType"] break Case "viewport" put revXMLChildNames(txml,"/GeocodeResponse/result/geometry/"&nodename,comma,,false) into str2 repeat for each item vp in str2 put revxmlnodecontents(txml,"GeocodeResponse/result/geometry/"&nodename&slash&vp&"/lat") into geo["Lat"][vp] put revxmlnodecontents(txml,"GeocodeResponse/result/geometry/"&nodename&slash&vp&"/lng") into geo["Lon"][vp] end repeat break end switch end repeat end if --breakpoint return geo end GeoCode