I do it like this, (code is self-explaining):
[...]
GeoApiContext context = new GeoApiContext().setApiKey("your-key");
GeocodingApiRequest request = GeocodingApi.newRequest(context);
request.latlng(new LatLng(lat, lon));
request.resultType(AddressType.STREET_ADDRESS);
GeocodingResult[] results = request.await(); // try catch?
for(GeocodingResult r : results){
for (AddressComponent ac : r.addressComponents) {
System.out.println(ac);
}
}
Check also AddressComponentType:
for(GeocodingResult r : results){
for (AddressComponent ac : r.addressComponents) {
for (AddressComponentType acType : ac.types) {
if (acType == AddressComponentType.LOCALITY) {
System.out.println(ac.longName);
} else if (acType == AddressComponentType.STREET_ADDRESS) {
System.out.println(ac.longName);
} else if (acType == AddressComponentType.COUNTRY) {
System.out.println(ac.longName);
}
}
}
}
Dont forget to include maven dependency:
<dependency>
<groupId>com.google.maps</groupId>
<artifactId>google-maps-services</artifactId>
<version>0.1.15</version>
</dependency>