Parse the kml document yourself using a custom mapping function.
String addressLine1 = st.standardize("1600 Amphitheatre Parkway, california ", new XmlMappingFunctor<String>(){ public String execute(String xml) { Document doc; try { //parse the xml string into a document object doc = XmlUtils.parse(xml); //use XPath to select an value from the document return XmlUtils.selectValue(doc, "//ThoroughfareName"); } catch (Exception e){ throw new GeoException("Unable to parse xml", e); } } }); System.out.println(addressLine1);
Using additional Utilities functions (see Javadoc for more info):
GeoUtils.distanceBetweenInKm(usAddr.getCoordinate(), usAddr.getCoordinate()); GeoUtils.distanceBetweenInMiles(usAddr.getCoordinate(), usAddr.getCoordinate()); GeoUtils.haversineDistanceBetweenInKm(usAddr.getCoordinate(), usAddr.getCoordinate()); GeoUtils.haversineDistanceBetweenInMiles(usAddr.getCoordinate(), usAddr.getCoordinate());
Using Functor and FunctionChain (see Javadoc for more info):
Functor<Integer, Integer, RuntimeException> add1 = new Functor<Integer, Integer, RuntimeException>(){ public Integer execute(Integer arg) { return arg+1; } }; FunctionChain<Integer> add2 = new FunctionChain<Integer>(new Functor[]{add1, add1}); FunctionChain<Integer> add3 = new FunctionChain<Integer>(add1, add2); System.out.println(add1.execute(1)); System.out.println(add2.execute(1)); System.out.println(add3.execute(1));
An instance of the kml document returned by Google's geocoding service, you need to parse this xml if you choose to do the parsing yourself. http://www.google.com/apis/maps/documentation/#Geocoding_HTTP_Request
Google did not provide a schema for this document, so I had to create one myself. see geoGoogleSchema.xsd which references a modified schema of xAL.xsd
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://earth.google.com/kml/2.0"> <Response> <name>1600 Amphitheatre Parkway, Mountain View, CA</name> <Status> <code>200</code> <request>geocode</request> </Status> <Placemark id="p1"> <address>1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA</address> <AddressDetails Accuracy="8" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"> <Country> <CountryNameCode>US</CountryNameCode> <AdministrativeArea> <AdministrativeAreaName>CA</AdministrativeAreaName> <SubAdministrativeArea> <SubAdministrativeAreaName> Santa Clara </SubAdministrativeAreaName> <Locality> <LocalityName>Mountain View</LocalityName> <Thoroughfare> <ThoroughfareName> 1600 Amphitheatre Pkwy </ThoroughfareName> </Thoroughfare> <PostalCode> <PostalCodeNumber> 94043 </PostalCodeNumber> </PostalCode> </Locality> </SubAdministrativeArea> </AdministrativeArea> </Country> </AddressDetails> <Point> <coordinates>-122.081783,37.423111,0</coordinates> </Point> </Placemark> </Response> </kml>