Get current location using json Get current location using json json json

Get current location using json


To change back human readable format, you can also use Geocoder but that is not working sometimes because google play service problem. I used this json geocodeing as second option for in case.

Please refer Google Geocoding API

Workflow is pass your latitude and longitude and get current location. Request url gonna be like this.

String reqURL = "http://maps.googleapis.com/maps/api/geocode/json?latlng="+ lat+","+lng +"&sensor=true";

Hopefully, this answer will help you.

public static JSONObject getLocationInfo(double lat, double lng) {    HttpGet httpGet = new HttpGet("http://maps.googleapis.com/maps/api/geocode/json?latlng="+ lat+","+lng +"&sensor=true");    HttpClient client = new DefaultHttpClient();    HttpResponse response;    StringBuilder stringBuilder = new StringBuilder();    try {        response = client.execute(httpGet);        HttpEntity entity = response.getEntity();        InputStream stream = entity.getContent();        int b;        while ((b = stream.read()) != -1) {            stringBuilder.append((char) b);        }    } catch (ClientProtocolException e) {    } catch (IOException e) {    }    JSONObject jsonObject = new JSONObject();    try {        jsonObject = new JSONObject(stringBuilder.toString());    } catch (JSONException e) {        e.printStackTrace();    }    return jsonObject;}public static String getCurrentLocationViaJSON(double lat, double lng) {    JSONObject jsonObj = getLocationInfo(lat, lng);    Log.i("JSON string =>", jsonObj.toString());    String currentLocation = "testing";    String street_address = null;    String postal_code = null;     try {        String status = jsonObj.getString("status").toString();        Log.i("status", status);        if(status.equalsIgnoreCase("OK")){            JSONArray results = jsonObj.getJSONArray("results");            int i = 0;            Log.i("i", i+ "," + results.length() ); //TODO delete this            do{                JSONObject r = results.getJSONObject(i);                JSONArray typesArray = r.getJSONArray("types");                String types = typesArray.getString(0);                if(types.equalsIgnoreCase("street_address")){                    street_address = r.getString("formatted_address").split(",")[0];                    Log.i("street_address", street_address);                }else if(types.equalsIgnoreCase("postal_code")){                    postal_code = r.getString("formatted_address");                    Log.i("postal_code", postal_code);                }                if(street_address!=null && postal_code!=null){                    currentLocation = street_address + "," + postal_code;                    Log.i("Current Location =>", currentLocation); //Delete this                    i = results.length();                }                i++;            }while(i<results.length());            Log.i("JSON Geo Locatoin =>", currentLocation);            return currentLocation;        }    } catch (JSONException e) {        Log.e("testing","Failed to load JSON");        e.printStackTrace();    }    return null;}

As my experience, only device generated latitude and longitude will work.Then call

String currentLocation = getCurrentLocationViaJSON(lat, lng);