package com.s5.server.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.Scanner;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import sun.management.counter.StringCounter;
import com.google.android.maps.GeoPoint;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GettingAddress1 {
private String jsonCoord(String address) throws IOException {
URL url = new URL("http://maps.googleapis.com/maps/api/geocode/json?address=" + address + "&sensor=false");
URLConnection connection = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
String jsonResult = "";
while ((inputLine = in.readLine()) != null) {
jsonResult += inputLine;
}
in.close();
return jsonResult;
}
public AddressComponent [] getAddress1(double latitude, double longitude) {
int flag=0;
String strAddress = "";
String formateAddrs="";
String url="http://maps.googleapis.com/maps/api/geocode/json?latlng="+ latitude+","+ longitude+"&sensor=true";
AddressComponent [] addressComponents= new AddressComponent[10];
//String url="http://maps.googleapis.com/maps/api/geocode/json?latlng=28.519180,77.213010&sensor=false";
HttpPost httppost = new HttpPost(url);
HttpClient httpclient = new DefaultHttpClient();
String result = "";
try
{
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntityGet = response.getEntity();
if (resEntityGet != null) {
result = EntityUtils.toString(resEntityGet);
}
} catch (Exception e) {
System.out.println("Exception:" + e);
}
// System.out.println("Result: " + result);
try
{
if (result != null) {
/**
*GSON by default ignores all json attributes that do not have corresponding Java fields.
*
*
***/
Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
Response response = gson.fromJson(result, Response.class);
addressComponents = response.getResults()[1].getAddressComponents();
String longname = response.getResults()[0].getAddressComponents()[0].getLongName();
String shortname = response.getResults()[0].getAddressComponents()[0].getShortName();
String [] typesOfAddress= response.getResults()[1].getAddressComponents()[1].getTypes();
System.out.println("Long Name Address>>>>>>>>>>>>>>>>>>>>>>>>>>>"+longname);
System.out.println("Short Name Address>>>>>>>>>>>>>>>>>>>>>>>>>>>"+shortname);
System.out.println("Type Name Address>>>>>>>>>>>>>>>>>>>>>>>>>>>"+Arrays.toString(typesOfAddress));
formateAddrs = response.getResults()[0].getFormattedAddress();
System.out.println("formateAddrs>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+formateAddrs);
System.out.println("Address Component>>>>>>>>>>>>>>>"+Arrays.toString(addressComponents));
if(strAddress.length()>0)
{
flag =1;
}
Gson gson1 = new Gson();
Response response1 = gson1.fromJson(jsonCoord(URLEncoder.encode(result, "UTF-8")),
Response.class);
// double lat = Double.parseDouble(response1.getResults()[1].getAddressComponents()[1].getTypes());
//double lng = Double.parseDouble(response1.getResults()[1].getAddressComponents()[1].getTypes());
}
}catch (Exception e) {
}
return addressComponents;
}
public static void main(String arg[])
{
double latitude,longitude;
String decider="y";
Scanner sc;
GettingAddress1 ga = new GettingAddress1();
do
{
sc= new Scanner(System.in);
System.out.println("\nEnter Latitude:");
latitude=sc.nextDouble();
System.out.println("\nEnter Longitude:");
longitude=sc.nextDouble();
AddressComponent [] addresses = ga.getAddress1(latitude,longitude);
System.out.println("From latitude and longitude address EQUIVALENT"+Arrays.toString(addresses));
}
while("y".equals(decider));
}
}
class AddressComponent implements Serializable{
public String[] getTypes() {
return types;
}
public void setTypes(String[] types) {
this.types = types;
}
/**
*
*/
private String longName;
private String shortName;
private String [] types;
public String getLongName() {
return longName;
}
public void setLongName(String longName) {
this.longName = longName;
}
public String getShortName() {
return shortName;
}
public void setShortName(String shortName) {
this.shortName = shortName;
}
public String toString() {
String outString = new String();
outString+="longName>>>"+longName+">>"+"shortName>>>>>>"+shortName+">>"+"types>>>>>>>>"+Arrays.toString(types);
outString += "\n";
return outString;
}
}
class Result implements Serializable {
/**
*
*/
private AddressComponent[] addressComponents;
private String formattedAddress;
public String getFormattedAddress() {
return formattedAddress;
}
public void setFormattedAddress(String formattedAddress) {
this.formattedAddress = formattedAddress;
}
public AddressComponent[] getAddressComponents() {
return addressComponents;
}
public void setAddressComponents(AddressComponent[] addressComponents) {
this.addressComponents = addressComponents;
}
public String toString() {
String outString = new String();
outString+="addressComponents>>>>>>>>>>>>>"+Arrays.toString(addressComponents)+"formatted_address>>>>>>>"+formattedAddress+">>";
outString += "\n";
return outString;
}
}
class Response implements Serializable{
/**
*
*/
private Result [] results;
public Result[] getResults() {
return results;
}
public void setResults(Result[] results) {
this.results = results;
}
public String toString() {
String outString = new String();
outString+="results>>>>>>>>>"+Arrays.toString(results);
outString += "\n";
return outString;
}
}
class Type implements Serializable {
private String administrativearealevel1, political;
public String getAdministrativearealevel1() {
return administrativearealevel1;
}
public void setAdministrativearealevel1(String administrativearealevel1) {
this.administrativearealevel1 = administrativearealevel1;
}
public String getPolitical() {
return political;
}
public void setPolitical(String political) {
this.political = political;
}
public String toString() {
String outString = new String();
outString+="administrative_area_level_1>>>>>>>>>"+administrativearealevel1+"political>>>>>>>>>"+political;
outString += "\n";
return outString;
}
}
Hello Experts I have problem In Google Map API this ss class that I am using, I want to get all component off type[] array that i can store all information in my been class Address Component ( like Country , Street name , State,Pincode);
And This is My
OUTPUT://
Enter Latitude:
28.55495
Enter Longitude:
77.19165
Long Name Address>>>>>>>>>>>>>>>>>>>>>>>>>>>Hauz Khas Tank
Short Name Address>>>>>>>>>>>>>>>>>>>>>>>>>>>Hauz Khas Tank
Type Name Address>>>>>>>>>>>>>>>>>>>>>>>>>>>[locality, political]
formateAddrs>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Hauz Khas Tank, Hauz Khas, New Delhi, Delhi 110016, India
Address Component>>>>>>>>>>>>>>>[longName>>>Hauz Khas>>shortName>>>>>>Hauz Khas>>types>>>>>>>>[sublocality, political]
, longName>>>New Delhi>>shortName>>>>>>New Delhi>>types>>>>>>>>[locality, political]
, longName>>>South Delhi>>shortName>>>>>>South Delhi>>types>>>>>>>>[administrative_area_level_2, political]
, longName>>>Delhi>>shortName>>>>>>DL>>types>>>>>>>>[administrative_area_level_1, political]
, longName>>>India>>shortName>>>>>>IN>>types>>>>>>>>[country, political]
]
From latitude and longitude address EQUIVALENT[longName>>>Hauz Khas>>shortName>>>>>>Hauz Khas>>types>>>>>>>>[sublocality, political]
, longName>>>New Delhi>>shortName>>>>>>New Delhi>>types>>>>>>>>[locality, political]
, longName>>>South Delhi>>shortName>>>>>>South Delhi>>types>>>>>>>>[administrative_area_level_2, political]
, longName>>>Delhi>>shortName>>>>>>DL>>types>>>>>>>>[administrative_area_level_1, political]
, longName>>>India>>shortName>>>>>>IN>>types>>>>>>>>[country, political]
]