Get latitude and longitude using geocoder and android Google Maps API v2

I am using the Google Maps API v2 for Android and working correctly. However, I am trying to use a geocoder to get the longitude and latitude of the address, but to no avail.

Has he changed the way to do this from v2?

I use regular 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 termination, but Log does not solve anything. When using the try / catch block, a map opens, but always with the same location. Use Internet permission, I also included COARSE_LOCATION in the project. I used various codes located here and on other sites, but without success.

Thanks in advance.

+22
android maps google-maps android-maps-v2
Mar 29 '13 at 21:13
source share
4 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 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 helps you.

+52
Apr 01 '13 at
source share

try this, hope this helps you

  private void getLatLongFromAddress(String address) { double lat= 0.0, lng= 0.0; Geocoder geoCoder = new Geocoder(this, Locale.getDefault()); try { List<Address> addresses = geoCoder.getFromLocationName(address , 1); if (addresses.size() > 0) { GeoPoint p = new GeoPoint( (int) (addresses.get(0).getLatitude() * 1E6), (int) (addresses.get(0).getLongitude() * 1E6)); lat=p.getLatitudeE6()/1E6; lng=p.getLongitudeE6()/1E6; Log.d("Latitude", ""+lat); Log.d("Longitude", ""+lng); } } catch(Exception e) { e.printStackTrace(); } } } 
+7
Mar 30 '13 at 4:40
source share

since the HttpClient has been discounted, you can try the following code with Asynctask (also note that we need to encode the address into a URL):

 public class GeoCoding extends AsyncTask<Void, Void, Void> { private String address; private static final String TAG = GeoCoding.class.getSimpleName(); JSONObject jsonObj; String URL; private String Address1 = "", Address2 = "", City = "", State = "", Country = "", County = "", PIN = "", Area=""; private double latitude, longitude; HttpURLConnection connection; BufferedReader br; StringBuilder sb ; public GeoCoding(String address){ this.address = address; } public String getArea(){ return Area; } public void getAddress() { Address1 = ""; Address2 = ""; City = ""; State = ""; Country = ""; County = ""; PIN = ""; Area =""; try { String Status = jsonObj.getString("status"); if (Status.equalsIgnoreCase("OK")) { JSONArray Results = jsonObj.getJSONArray("results"); JSONObject zero = Results.getJSONObject(0); JSONArray address_components = zero.getJSONArray("address_components"); for (int i = 0; i < address_components.length(); i++) { JSONObject zero2 = address_components.getJSONObject(i); String long_name = zero2.getString("long_name"); JSONArray mtypes = zero2.getJSONArray("types"); String Type = mtypes.getString(0); if (! TextUtils.isEmpty(long_name) || !long_name.equals(null) || long_name.length() > 0 || !long_name.equals("")) { if (Type.equalsIgnoreCase("street_number")) { Address1 = long_name + " "; } else if (Type.equalsIgnoreCase("route")) { Address1 = Address1 + long_name; } else if (Type.equalsIgnoreCase("sublocality")) { Address2 = long_name; } else if (Type.equalsIgnoreCase("locality")) { City = long_name; } else if (Type.equalsIgnoreCase("administrative_area_level_2")) { County = long_name; } else if (Type.equalsIgnoreCase("administrative_area_level_1")) { State = long_name; } else if (Type.equalsIgnoreCase("country")) { Country = long_name; } else if (Type.equalsIgnoreCase("postal_code")) { PIN = long_name; }else if( Type.equalsIgnoreCase("neighborhood")){ Area = long_name; } } } } } catch (Exception e) { e.printStackTrace(); } } public void getGeoPoint(){ try{ longitude = ((JSONArray)jsonObj.get("results")).getJSONObject(0) .getJSONObject("geometry").getJSONObject("location") .getDouble("lng"); latitude = ((JSONArray)jsonObj.get("results")).getJSONObject(0) .getJSONObject("geometry").getJSONObject("location") .getDouble("lat"); }catch (Exception e){ e.printStackTrace(); } } @Override protected Void doInBackground(Void... params) { try { StringBuilder urlStringBuilder = new StringBuilder("http://maps.google.com/maps/api/geocode/json"); urlStringBuilder.append("?address=" + URLEncoder.encode(address, "utf8")); urlStringBuilder.append("&sensor=false"); URL = urlStringBuilder.toString(); Log.d(TAG, "URL: " + URL); URL url = new URL(URL); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setDoInput(true); connection.connect(); br = new BufferedReader(new InputStreamReader(connection.getInputStream())); sb = new StringBuilder(); String line; while ((line = br.readLine()) != null) { sb = sb.append(line + "\n"); } }catch (Exception e){e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void aVoid) { try { Log.d(TAG, "response code: " + connection.getResponseCode()); jsonObj = new JSONObject(sb.toString()); Log.d(TAG, "JSON obj: " + jsonObj); getAddress(); Log.d(TAG, "area is: " + getArea()); getGeoPoint(); Log.d("latitude", "" + latitude); Log.d("longitude", "" + longitude); } } catch (Exception e) { e.printStackTrace(); } super.onPostExecute(aVoid); } } 
+2
Jun 30 '15 at 9:00
source share

you can get the latitude and longitude of your current location using this simple code

 GPS_Location mGPS = new GPS_Location(MyApplication.getAppContext()); if (mGPS.canGetLocation) { mLat = mGPS.getLatitude(); mLong = mGPS.getLongitude(); } else { System.out.println("cannot find"); } 

You must add gps and other permissions for your application.

-10
Jun 08 '13 at
source share



All Articles