这是我从地理编码器获得响应的代码:
public class Snippet {
private GeoCodeResponse getAddressFromLatLng(double lattitute,
double longtitute) throws ClientProtocolException, IOException {
String latitude = String.valueOf(lattitute);
String longitude = String.valueOf(longtitute);
String URL = "http://maps.google.com/maps/api/geocode/json?latlng="
+ latitude + "," + longitude + "&sensor=true";
RestTemplate restTemplate = new RestTemplate();
ObjectMapper mapper = new ObjectMapper();
String forObject = restTemplate.getForObject(URL, String.class);
GeoCodeResponse geoCodeResponse = mapper.readValue(forObject,
GeoCodeResponse.class);
System.out.println(forObject);
return geoCodeResponse;
}
public static void main(String[] args) throws ClientProtocolException,
IOException {
GeoCodeResponse geoCoderResponse = new TrackServiceImpl()
.getAddressFromLatLng(17.42560, 78.548339);
if (geoCoderResponse.getStatus().equals("OK")) {
List<Results> listOfResults = geoCoderResponse.getResults();
for (Results result : listOfResults) {
// get Results Object
Iterator<Results> results = listOfResults.iterator();
while (results.hasNext()) {
result = results.next();
System.out.println(result.getFormatted_address());
// get Address Object
Collection<AddressComponent> addresscomponents = result
.getAddress_components();
Iterator<AddressComponent> addresscomponentsIterator = addresscomponents
.iterator();
while (addresscomponentsIterator.hasNext()) {
AddressComponent addressComponent = addresscomponentsIterator
.next();
System.out.println(addressComponent.getLong_name());
System.out.println(addressComponent.getShort_name());
}
// get Geometry Object
Geometry geometry = result.getGeometry();
System.out.println(geometry.getLocation_type());
// get Location Object
Location location = geometry.getLocation();
System.out.println(location.getLat());
System.out.println(location.getLng());
}
break;
}
}
}
private GeoCodeResponse getAddressFromLatLng(double lattitute,
double longtitute) throws ClientProtocolException, IOException {
String latitude = String.valueOf(lattitute);
String longitude = String.valueOf(longtitute);
String URL = "http://maps.google.com/maps/api/geocode/json?latlng="
+ latitude + "," + longitude + "&sensor=true";
RestTemplate restTemplate = new RestTemplate();
ObjectMapper mapper = new ObjectMapper();
String forObject = restTemplate.getForObject(URL, String.class);
GeoCodeResponse geoCodeResponse = mapper.readValue(forObject,
GeoCodeResponse.class);
System.out.println(forObject);
return geoCodeResponse;
}
}
这是地理编码器的响应:
{
"results" : [
{
"address_components" : [
{
"long_name" : "4-1-91/3",
"short_name" : "4-1-91/3",
"types" : []
},
{
"long_name" : "Nacharam Mallapur Road",
"short_name" : "Nacharam Mallapur Road",
"types" : [ "route" ]
},
{
"long_name" : "Bhavani Nagar",
"short_name" : "Bhavani Nagar",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "Tarnaka",
"short_name" : "Tarnaka",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "Secunderabad",
"short_name" : "SC",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Ranga Reddy",
"short_name" : "R.R. District",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Andhra Pradesh",
"short_name" : "AP",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
},
{
"long_name" : "500076",
"short_name" : "500076",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "4-1-91/3, Nacharam Mallapur Road, Bhavani Nagar, Tarnaka, Secunderabad, Andhra Pradesh 500076, India",
"geometry" : {
"location" : {
"lat" : 17.4251743,
"lng" : 78.5480111
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : 17.4265232802915,
"lng" : 78.54936008029151
},
"southwest" : {
"lat" : 17.4238253197085,
"lng" : 78.54666211970849
}
}
},
"types" : [ "street_address" ]
},
{
"address_components" : [
{
"long_name" : "Bhavani Nagar",
"short_name" : "Bhavani Nagar",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "Tarnaka",
"short_name" : "Tarnaka",
"types" : [ "sublocality", "political" ]
},
{
"long_name" : "Secunderabad",
"short_name" : "SC",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Ranga Reddy",
"short_name" : "R.R. District",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Andhra Pradesh",
"short_name" : "AP",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Bhavani Nagar, Tarnaka, Secunderabad, Andhra Pradesh, India",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 17.4276068,
"lng" : 78.550246
},
"southwest" : {
"lat" : 17.4249009,
"lng" : 78.54588509999999
}
},
"location" : {
"lat" : 17.4261285,
"lng" : 78.5479845
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 17.4276068,
"lng" : 78.550246
},
"southwest" : {
"lat" : 17.4249009,
"lng" : 78.54588509999999
}
}
},
"types" : [ "sublocality", "political" ]
},
{
"address_components" : [
{
"long_name" : "500076",
"short_name" : "500076",
"types" : [ "postal_code" ]
},
{
"long_name" : "Andhra Pradesh",
"short_name" : "AP",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Andhra Pradesh 500076, India",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 17.4503108,
"lng" : 78.59751469999999
},
"southwest" : {
"lat" : 17.4199893,
"lng" : 78.5419289
}
},
"location" : {
"lat" : 17.4381342,
"lng" : 78.56040689999999
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 17.4503108,
"lng" : 78.59751469999999
},
"southwest" : {
"lat" : 17.4199893,
"lng" : 78.5419289
}
}
},
"types" : [ "postal_code" ]
},
{
"address_components" : [
{
"long_name" : "Hyderabad",
"short_name" : "Hyderabad",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Andhra Pradesh",
"short_name" : "AP",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Hyderabad, Andhra Pradesh, India",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 17.4823267,
"lng" : 78.5604858
},
"southwest" : {
"lat" : 17.3486722,
"lng" : 78.4018707
}
},
"location" : {
"lat" : 17.385044,
"lng" : 78.486671
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 17.4823267,
"lng" : 78.5604858
},
"southwest" : {
"lat" : 17.3486722,
"lng" : 78.4018707
}
}
},
"types" : [ "administrative_area_level_2", "political" ]
},
{
"address_components" : [
{
"long_name" : "Secunderabad",
"short_name" : "SC",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Hyderabad",
"short_name" : "Hyderabad",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Andhra Pradesh",
"short_name" : "AP",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Secunderabad, Andhra Pradesh, India",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 17.6393052,
"lng" : 78.64442819999999
},
"southwest" : {
"lat" : 17.4124778,
"lng" : 78.47253499999999
}
},
"location" : {
"lat" : 17.4399295,
"lng" : 78.4982741
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 17.6393052,
"lng" : 78.64442819999999
},
"southwest" : {
"lat" : 17.4124778,
"lng" : 78.47253499999999
}
}
},
"types" : [ "locality", "political" ]
},
{
"address_components" : [
{
"long_name" : "Ranga Reddy",
"short_name" : "R.R. District",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Andhra Pradesh",
"short_name" : "AP",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Ranga Reddy, Andhra Pradesh, India",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 17.701268,
"lng" : 78.8475038
},
"southwest" : {
"lat" : 16.8492337,
"lng" : 77.3753358
}
},
"location" : {
"lat" : 17.2031945,
"lng" : 77.8367282
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 17.701268,
"lng" : 78.8475038
},
"southwest" : {
"lat" : 16.8492337,
"lng" : 77.3753358
}
}
},
"types" : [ "administrative_area_level_2", "political" ]
},
{
"address_components" : [
{
"long_name" : "Andhra Pradesh",
"short_name" : "AP",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Andhra Pradesh, India",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 19.916715,
"lng" : 84.80412939999999
},
"southwest" : {
"lat" : 12.596836,
"lng" : 76.749786
}
},
"location" : {
"lat" : 17.0477624,
"lng" : 80.0981869
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 19.916715,
"lng" : 84.80412939999999
},
"southwest" : {
"lat" : 12.596836,
"lng" : 76.749786
}
}
},
"types" : [ "administrative_area_level_1", "political" ]
},
{
"address_components" : [
{
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "India",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 35.5044752,
"lng" : 97.395555
},
"southwest" : {
"lat" : 6.747138899999999,
"lng" : 68.1623859
}
},
"location" : {
"lat" : 20.593684,
"lng" : 78.96288
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 35.5044752,
"lng" : 97.395555
},
"southwest" : {
"lat" : 6.747138899999999,
"lng" : 68.1627956
}
}
},
"types" : [ "country", "political" ]
}
],
"status" : "OK"
}
我的问题是如何从下面的对象中获取这些?
> address components:
"long_name" : "Secunderabad",
"short_name" : "SC",
"long_name" : "Andhra Pradesh",
"short_name" : "AP",
"long_name" : "Andhra Pradesh",
"short_name" : "AP",
> location :
"lat" : 17.4251743,
"lng" : 78.5480111**
请帮助我,我无法获得这个格式化的地址。提前致谢。