使用Geocoder显示用户的位置地址

时间:2012-04-19 11:15:12

标签: android

我有这种方法在地图活动中显示用户的纬度和经度:

public void animateMap(Location location){
        double lat = location.getLatitude();
        double lng = location.getLongitude();

       Toast.makeText(MyMapActivity.this,
                "Sie sind an\n" + lat + "\n" + lng, Toast.LENGTH_SHORT)
                .show();
        GeoPoint point = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
        mapController.animateTo(point, new Message());
        mapOverlay.setPointToDraw(point);

    }

如何在我的方法上实现Geocoder?因此,Toast将显示位置的地址而不是坐标

3 个答案:

答案 0 :(得分:1)

最简单的实现方法是使用地理编码器类:

 Geocoder geocoder = new Geocoder(context, Locale.ENGLISH); 
        geocoder.getFromLocation(lat, lng, 1);
        List<Address> ls=new ArrayList();
        ls= geocoder.getFromLocation(lat, lng, 1);
        String myLocation = ls.get(0).getSubAdminArea();

您可以查看此课程返回的所有信息,并选择最适合您的信息。它包含从国家/地区名称到地标名称,邻居邮政编码......几乎您可能需要的任何内容。

但请记住,如果Google没有关于此位置的信息,则会返回空字符串!

所以对你而言,应该是这样的:

public void animateMap(Location location){
    double lat = location.getLatitude();
    double lng = location.getLongitude();


String myLocation;
 try{
           Geocoder geocoder = new Geocoder(context, Locale.ENGLISH);   
        geocoder.getFromLocation(lat, lng, 1);
        List<Address> ls=new ArrayList();
        ls= geocoder.getFromLocation(lat, lng, 1);
        myLocation = ls.get(0).getSubAdminArea();
 }catch(Exception e){
     myLocation="Sorry, we have no information about this location";
 }



   Toast.makeText(MyMapActivity.this,
            "Sie sind an\n" + myLocation , Toast.LENGTH_SHORT)
            .show();
    GeoPoint point = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));
    mapController.animateTo(point, new Message());
    mapOverlay.setPointToDraw(point);

}

答案 1 :(得分:1)

你使用

 Geocoder myLocation = new Geocoder(context, Locale.ENGLISH);
List<Address> myList= myLocation.getFromLocation(lat, lng, 1);
Address add = myList.get(0);
String addressString = add.getAddressLine(0);
String country = add.getCountryName();                      
String city = add.getLocality();

答案 2 :(得分:0)

从Geocoder获取您所在位置的地址列表,然后检查null or empty result

 Geocoder geocoder = new Geocoder(getApplicationContext,Locale.getDefault()); 
 List<Address> address = geocoder.getFromLocation(lat, long, 1);
 String myLocation = "";
 if(address != null && !address.isEmpty())
 {
    myLocation = address.get(0).getSubAdminArea();
 }