getFromLocation(纬度,经度,数字)函数为已知位置返回null

时间:2012-08-02 08:28:13

标签: android null

我正在使用Geocoder找到我的位置,其中包含地址,邮政编码和国家/地区值。

但是getFromLocation(latitude,longitude,number)返回null,即使我使用已知的位置属性(纬度:40,645081经度:22,988892)。

我正在使用Eclipse在AVD(API级别7)上测试我的应用程序。

提前致谢。

以下是使用getFromLocation函数的片段。

private void updateWithNewLocation(Location location){
    String latLongString;
    TextView myLocationText;
    myLocationText = (TextView)findViewById(R.id.myLocationText);

    String addressString = "No address found";

    if (location != null) {
        double lat = location.getLatitude();
        double lng = location.getLongitude();
        latLongString = "Lat:" + lat + "\nLong:" + lng;

        //double latitude = 73.147536;
        //double longitude = 0.510638;
        Geocoder gc = new Geocoder(this, Locale.getDefault());

        try {
            List<Address> addresses = gc.getFromLocation(lat, lng, 1);
            Log.v("TRY_BODY", "All addresses are: " + addresses);
            StringBuilder sb = new StringBuilder();
            if (addresses.size() > 0) {
                Log.v("IF_BODY", "All addresses are: " + addresses);
                Address address = addresses.get(0);
                for (int i = 0; i < address.getMaxAddressLineIndex(); i++){
                    sb.append(address.getAddressLine(i)).append("\n");
                    sb.append(address.getLocality()).append("\n");
                    sb.append(address.getPostalCode()).append("\n");
                    sb.append(address.getCountryName());
                }
                addressString = sb.toString();
            }
        } catch (IOException e) {}
    } 
    else {
        latLongString = "No location found";
    }

    myLocationText.setText("Current Position:\n"+latLongString + "\n" + addressString);
}

1 个答案:

答案 0 :(得分:0)

它很常见,有时谷歌服务器不返回任何地址,所以你应该尝试agian,它可能是任何服务器忙,或其他一些, 您可以在任何带有循环的线程中运行此代码,如果地址成功,您可以停止循环,它将结束该线程。