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.
The short story is you need to do: Geocoder geocoder = new Geocoder(this, Locale. getDefault()); List<Address> addresses = geocoder. getFromLocation(lat, lng, 1);
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With