Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

get latitude and longitude with geocoder and android Google Maps API v2

Tags:

I'm using the Google Maps API v2 for android and works properly. However, I am trying to use geocoder to get the longitude and latitude of an address, but without success.

It has changed the way to do it from the v2?

I am using the conventional code

Geocoder gc = new Geocoder(context); //...   List<Address> list = gc.getFromLocationName("1600 Amphitheatre Parkway, Mountain View, CA", 1);    Address address = list.get(0);    double lat = address.getLatitude();   double lng = address.getLongitude(); //... 

Always returns a forced shutdown, and Log solves nothing. When using a block of try / catch, opens the map but always with the same location Use the Internet permission, I have included in the project also COARSE_LOCATION I have used various codes located here and on other sites, but without success.

Thank you in advance.

like image 417
Sergio76 Avatar asked Mar 29 '13 21:03

Sergio76


People also ask

How do I find the latitude and longitude of a geocoder address?

The short story is you need to do: Geocoder geocoder = new Geocoder(this, Locale. getDefault()); List<Address> addresses = geocoder. getFromLocation(lat, lng, 1);


1 Answers

Try this solution using this example url:

http://maps.google.com/maps/api/geocode/json?address=mumbai&sensor=false

which returns data in json format with lat/lng of address.

private class DataLongOperationAsynchTask extends AsyncTask<String, Void, String[]> {    ProgressDialog dialog = new ProgressDialog(MainActivity.this);     @Override     protected void onPreExecute() {         super.onPreExecute();         dialog.setMessage("Please wait...");         dialog.setCanceledOnTouchOutside(false);         dialog.show();     }      @Override     protected String[] doInBackground(String... params) {         String response;         try {             response = getLatLongByURL("http://maps.google.com/maps/api/geocode/json?address=mumbai&sensor=false");             Log.d("response",""+response);             return new String[]{response};         } catch (Exception e) {             return new String[]{"error"};         }     }      @Override     protected void onPostExecute(String... result) {         try {             JSONObject jsonObject = new JSONObject(result[0]);              double lng = ((JSONArray)jsonObject.get("results")).getJSONObject(0)                     .getJSONObject("geometry").getJSONObject("location")                     .getDouble("lng");              double lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0)                     .getJSONObject("geometry").getJSONObject("location")                     .getDouble("lat");              Log.d("latitude", "" + lat);             Log.d("longitude", "" + lng);         } catch (JSONException e) {             e.printStackTrace();         }         if (dialog.isShowing()) {             dialog.dismiss();         }     } }   public String getLatLongByURL(String requestURL) {     URL url;     String response = "";     try {         url = new URL(requestURL);          HttpURLConnection conn = (HttpURLConnection) url.openConnection();         conn.setReadTimeout(15000);         conn.setConnectTimeout(15000);         conn.setRequestMethod("GET");         conn.setDoInput(true);         conn.setRequestProperty("Content-Type",                 "application/x-www-form-urlencoded");         conn.setDoOutput(true);         int responseCode = conn.getResponseCode();          if (responseCode == HttpsURLConnection.HTTP_OK) {             String line;             BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));             while ((line = br.readLine()) != null) {                 response += line;             }         } else {             response = "";         }      } catch (Exception e) {         e.printStackTrace();     }     return response; } 

Hope this will helps you.

like image 101
Amol Sawant 96 Kuli Avatar answered Oct 19 '22 20:10

Amol Sawant 96 Kuli