android获取当前位置名称

问题描述:

嘿,我想要得到当前位置的名称。我没有编码获得当前位置(经纬度,郎)我怎么能显示相对地名android获取当前位置名称

(IE)13.006389 - 80.2575:阿达亚,晨奈,印度

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() { 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // called when the location provider status changes. Possible status: OUT_OF_SERVICE, TEMPORARILY_UNAVAILABLE or AVAILABLE. 
    } 
    public void onProviderEnabled(String provider) { 
     // called when the location provider is enabled by the user 
    } 
    public void onProviderDisabled(String provider) { 
     // called when the location provider is disabled by the user. If it is already disabled, it's called immediately after requestLocationUpdates 
    } 

    public void onLocationChanged(Location location) { 
     double latitute = location.getLatitude(); 
     double longitude = location.getLongitude(); 
     // do whatever you want with the coordinates 
    } 
}); 

你要找的这句话是“反向地理编码”。在*上的Another question讨论相同的主题 - 您可以使用那个选定的答案:)

+0

嗨亚历山大感谢您的回复,当我用,我得到了错误,如7月2日至一十四日:49:58.887: W/System.err(467):java.io.IOException:服务不可用 – 2012-02-14 02:22:38

+0

您是否添加权限和access_fine_location权限? – 2012-02-15 18:37:55

这只是为提示添加您的代码!

public void onLocationChanged(Location location) { 
    // TODO Auto-generated method stub 
    if (location != null) { 
     System.out.println("in onlocationchanged"); 
     String locationString=location.convert(location.getLatitude(),1); 
     Toast.makeText(this,"locationString=="+locationString, Toast.LENGTH_LONG).show(); 
     double lat = location.getLatitude(); 
     double lng = location.getLongitude(); 
     String currentLocation = "The location is changed to Lat: " + lat + " Lng: " + lng; 
     Toast.makeText(this,currentLocation, Toast.LENGTH_LONG).show(); 

使用这两法

public double getLattitude() { 
    return lattitude; 
} 

} 
public double getLongitude() { 
    return longitude; 

//这将转换为纬度& LNG转换成String地址,我已经在你的例如文本字段设置。这是通过使用反向地理编码&的概念,在Android中有一个名为Geocoder的类。

// Write the location name. 
    // 

    try { 

     Geocoder geo = new Geocoder(this.getApplicationContext(), Locale.getDefault()); 
     List<Address> addresses = geo.getFromLocation(latitude, longitude, 1); 
     if (addresses.isEmpty()) { 
      yourtextboxname.setText("Waiting for Location"); 
     } 
     else { 
      if (addresses.size() > 0) { 
       yourtextboxname.setText(addresses.get(0).getFeatureName() + ", " + addresses.get(0).getLocality() +", " + addresses.get(0).getAdminArea() + ", " + addresses.get(0).getCountryName()); 
      } 
     } 
    } 

希望这会帮助你。,,,,,

使用反向地理编码,饲料的经度和纬度,并获得地址。

Geocoder geocoder = new Geocoder(this, Locale.ENGLISH); 
    try { 
     List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1); 

     if(addresses != null) { 
      Address returnedAddress = addresses.get(0); 
      StringBuilder strReturnedAddress = new StringBuilder("Address:\n"); 
      for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) { 
       strReturnedAddress.append(returnedAddress.getAddressLine(i)).append("\n"); 
      } 
      myAddress.setText(strReturnedAddress.toString()); 

     } 
     else{ 
      myAddress.setText("No Address returned!"); 
     } 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     myAddress.setText("Canont get Address!"); 
    } 

这里是代码,以获得当前位置,并绘制在谷歌地图

public class Showmap extends MapActivity { 

    private MapView mapView; 
    private MapController mapController; 
    private LocationManager locationManager; 
    private LocationListener locationListener; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.showmap); 
     LocationManager locationManager = (LocationManager) 
       getSystemService(Context.LOCATION_SERVICE); 
     locationListener = new GPSLocationListener(); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 
       0, locationListener); 
     mapView = (MapView) findViewById(R.id.mapView); 
     // enable Street view by default 
     mapView.setStreetView(true); 
     // enable to show Satellite view 
     // mapView.setSatellite(true); 
     // enable to show Traffic on map 
     // mapView.setTraffic(true); 
     mapView.setBuiltInZoomControls(true); 
     mapController = mapView.getController(); 
     mapController.setZoom(16); 
    } 

    protected boolean isRouteDisplayed() { 
     return false; 
    } 

    private class GPSLocationListener implements LocationListener { 

     @Override 
     public void onLocationChanged(Location location) { 
      if (location != null) { 
       GeoPoint point = new GeoPoint(
         (int) (location.getLatitude() * 1E6), 
         (int) (location.getLongitude() * 1E6)); 
       mapController.animateTo(point); 
       mapController.setZoom(16); 
       // add marker 
       MapOverlay mapOverlay = new MapOverlay(); 
       mapOverlay.setPointToDraw(point); 
       List<Overlay> listOfOverlays = mapView.getOverlays(); 
       listOfOverlays.clear(); 
       listOfOverlays.add(mapOverlay); 
       String address = ConvertPointToLocation(point); 
       Toast.makeText(getBaseContext(), address, Toast.LENGTH_SHORT) 
         .show(); 
       mapView.invalidate(); 
      } 
     } 

     public String ConvertPointToLocation(GeoPoint point) { 
      String address = ""; 
      Geocoder geoCoder = new Geocoder(getBaseContext(), 
        Locale.getDefault()); 
      try { 
       List<Address> addresses = geoCoder.getFromLocation(
         point.getLatitudeE6()/1E6, 
         point.getLongitudeE6()/1E6, 1); 
       if (addresses.size() > 0) { 
        for (int index = 0; index < addresses.get(0) 
          .getMaxAddressLineIndex(); index++) 
         address += addresses.get(0).getAddressLine(index) + " "; 
        Log.i(address, address); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return address; 
     } 

     @Override 
     public void onProviderDisabled(String provider) {} 

     @Override 
     public void onProviderEnabled(String provider) {} 

     @Override 
     public void onStatusChanged(String provider,int status,Bundle extras){} 
    } 

    class MapOverlay extends Overlay { 

     private GeoPoint pointToDraw; 

     public void setPointToDraw(GeoPoint point) { 
      pointToDraw = point; 
     } 

     public GeoPoint getPointToDraw() { 
      return pointToDraw; 
     } 

     @Override 
     public boolean draw(Canvas canvas, MapView mapView, boolean shadow, 
       long when) { 
      super.draw(canvas, mapView, shadow); 
      // convert point to pixels 
      Point screenPts = new Point(); 
      mapView.getProjection().toPixels(pointToDraw, screenPts); 
      // add marker 
      Bitmap bmp = BitmapFactory.decodeResource(getResources(), 
        R.drawable.marker); 
      // 24 is the height of image 
      canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 24, null); 
      return true; 
     } 
    } 
}