Get map address or location address in Android

I am writing an application that requires to get the current location of a map. My map file works fine myself, but I need to get the address (see addressString below in buttom) from another Activity . I tried getAddress / setAddress (setters / getters). They do not work. They always return "no address" (default).

Here is my code ...

How can I make this a standalone Java class ??? Or get an address from another activity?

Many thanks.

This code works on its own.

Mat


 import android.content.Context; import android.location.Address; import android.location.Criteria; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.widget.TextView; import java.io.IOException; import java.util.List; import java.util.Locale; public class GetMapAddress extends MapActivity { MapController mapController; MyPositionOverlay positionOverlay; MapController mc; GeoPoint p; String addressString = "No address found"; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.map); MapView myMapView = (MapView) findViewById(R.id.myMapView); mapController = myMapView.getController(); // Configure the map display options myMapView.setSatellite(true); myMapView.setStreetView(true); // Zoom in mapController.setZoom(17); myMapView.setBuiltInZoomControls(true); // Add the MyPositionOverlay positionOverlay = new MyPositionOverlay(); List<Overlay> overlays = myMapView.getOverlays(); overlays.add(positionOverlay); LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_LOW); String provider = locationManager.getBestProvider(criteria, true); Location location = locationManager.getLastKnownLocation(provider); updateWithNewLocation(location); locationManager.requestLocationUpdates(provider, 2000, 10, locationListener); mc = myMapView.getController(); String coordinates[] = { "1.352566007", "103.78921587" }; double lat = Double.parseDouble(coordinates[0]); double lng = Double.parseDouble(coordinates[1]); p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); mc.animateTo(p); mc.setZoom(17); myMapView.invalidate(); } private final LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { updateWithNewLocation(location); } public void onProviderDisabled(String provider) { updateWithNewLocation(null); } public void onProviderEnabled(String provider) { } public void onStatusChanged(String provider, int status, Bundle extras) { } }; /** Update the map with a new location */ private void updateWithNewLocation(Location location) { TextView myLocationText = (TextView) findViewById(R.id.myLocationText); String latLongString; if (location != null) { // Update my location marker positionOverlay.setLocation(location); // Update the map location. Double geoLat = location.getLatitude() * 1E6; Double geoLng = location.getLongitude() * 1E6; GeoPoint point = new GeoPoint(geoLat.intValue(), geoLng.intValue()); mapController.animateTo(point); double lat = location.getLatitude(); double lng = location.getLongitude(); latLongString = "Lat:" + lat + "\nLong:" + lng; Geocoder gc = new Geocoder(this, Locale.getDefault()); try { List<Address> addresses = gc.getFromLocation(lat, lng, 1); StringBuilder sb = new StringBuilder(); if (addresses.size() > 0) { Address address = addresses.get(0); for (int i = 0; i < address.getMaxAddressLineIndex(); i++) sb.append(address.getAddressLine(i)).append("\n"); sb.append(address.getCountryName()); } addressString = sb.toString(); } catch (IOException e) { } } else { // Place the CellID here latLongString = "No location found"; } // This commented out line will include latitute and longtitute // myLocationText.setText("Your Phone is Currently at.. \n" + latLongString + "\n" + // addressString); myLocationText.setText("Your Phone is Currently at.. \n" + addressString); setAddress(addressString); ; } public void setAddress(String add) { this.addressString = add; } public String getAddress() { return addressString; } @Override protected boolean isRouteDisplayed() { return false; } } 
+7
java android google-maps
source share
4 answers

I used the following code in my application and its work is absolutely perfect for me. Try this. Hope this helps you.

  // // Write the location name. // try { Geocoder geo = new Geocoder(youractivityclassname.this.getApplicationContext(), Locale.getDefault()); List<Address> addresses = geo.getFromLocation(latitude, longitude, 1); if (addresses.isEmpty()) { yourtextfieldname.setText("Waiting for Location"); } else { if (addresses.size() > 0) { yourtextfieldname.setText(addresses.get(0).getFeatureName() + ", " + addresses.get(0).getLocality() +", " + addresses.get(0).getAdminArea() + ", " + addresses.get(0).getCountryName()); //Toast.makeText(getApplicationContext(), "Address:- " + addresses.get(0).getFeatureName() + addresses.get(0).getAdminArea() + addresses.get(0).getLocality(), Toast.LENGTH_LONG).show(); } } } catch (Exception e) { e.printStackTrace(); // getFromLocation() may sometimes fail } 
+10
source share

Either pass the address to the second Activity in Intent , or if you need to search from your second Activity , just open Geocoder from there.

If you somehow create an instance of the above class ( GetMapActivity ) from the second Activity and call the getAddress method, this will not work.

0
source share

The following might work [move code from onCreate and put it in a method]

 public String getAddressString() { if (addressString.equals("default") { LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE); Criteria crit = new Criteria(); crit.setAccuracy(Criteria.ACCURACY_FINE); String provider = lm.getBestProvider(crit, true); updateWithNewLocation(lm.getLastKnownLocation(provider)); } return addressString; } 
0
source share

All Articles