无法从Android中的按钮单击获取我的位置的地址从纬度和经度

时间:2014-12-14 20:04:15

标签: android google-maps

我已经写了一个程序来打印我所在位置的纬度和经度,经纬度是正确的,但不幸的是我无法借助相同的纬度和经度来解释我所在地址,需要一些请帮忙,没有错误也出现了。 我也尝试使用addresses.get(0).getAddressLine(1)但结果相同。 这里gpsTracker是我的GPSTracker类的对象,我用它来显示我的纬度和经度,这是完美的。

以上代码:

bDetails.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            try {
                Geocoder geocoder = new Geocoder(getApplicationContext(),
                        Locale.getDefault());

                List<Address> addresses = null;
                double latitude = gpsTracker.getLatitude();
                double longitude = gpsTracker.getLongitude();
                addresses = geocoder
                        .getFromLocation(latitude, longitude, 1);
                String areaName = addresses.get(0).getLocality();
                // String cityName = addresses.get(0).getAdminArea();
                String pincode = addresses.get(0).getPostalCode();
                // String stateName = addresses.get(0).getFeatureName();
                String countryName = addresses.get(0).getCountryName();

                if (addresses.isEmpty()) {
                    txtadd.setText("Waiting for Location");
                } else {
                    if (addresses.size() > 0) {
                        txtadd.setText("Area Name :" + areaName + "\n"
                                + "\n" + "PinCode :" + pincode + "\n"
                                + "\n" + "Country Name:" + countryName);
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    });

任何人都可以建议我必须做出任何更改,以便我能够显示我所在位置的地址吗?

2 个答案:

答案 0 :(得分:1)

试试这个

private String getAddressString(double latitude, double longitude) {
    String strAddress = "";
    Geocoder geocoder = new Geocoder(this, Locale.getDefault());
    try {
        List<Address> addresses = geocoder.getFromLocation(latitude,
                longitude, 1);
        if (addresses != null) {
            Address returnAddress = addresses.get(0);
            StringBuilder strReturnAddress = new StringBuilder("");

            for (int i = 0; i < returnAddress.getMaxAddressLineIndex(); i++) {
                strReturnAddress
                        .append(returnAddress.getAddressLine(i)).append(
                                "\n");
            }
            strAddress = strReturnAddress.toString();
            Log.w("address",
                    "" + strReturnAddress.toString());
        } else {
            Log.w("address", "No Address found!");
        }
    } catch (Exception e) {
        e.printStackTrace();
        Log.w("address", "Can't get Address!");
    }
    return strAddress;
}

答案 1 :(得分:0)

我希望你有互联网连接,因为只有上网才能获得地址。 在其他情况下尝试更改坐标。也许你的地方没有地址。