geocoder.getFromLocation返回null

时间:2012-10-08 08:54:16

标签: android location android-location google-geocoder

我的代码:

                 try
                {

                            Geocoder geocoder;
                        List<Address> addresses;

            geocoder = new Geocoder(LocationActivity.this, Locale.getDefault());

            addresses = geocoder.getFromLocation(longitude,latitude,1);

            Toast.makeText(LocationActivity.this, addresses.size() + "", Toast.LENGTH_LONG).show();

            String address = addresses.get(0).getAddressLine(0);
            String city = addresses.get(0).getAddressLine(0);
            String country = addresses.get(0).getAddressLine(0);

            Toast.makeText(LocationActivity.this, address + "  " + city + " " + country, Toast.LENGTH_LONG).show();

        }
        catch(Exception e)
        {
            Toast.makeText(LocationActivity.this,e.toString(), Toast.LENGTH_LONG).show();
        }

这是我从经度和纬度获取地址的代码。 但每次addresses.size返回0

任何人都可以帮助我吗

5 个答案:

答案 0 :(得分:1)

我找到了解决方案... 在Ctrl上按住getFromLocation()并转到Geocoder.class。 然后为您的android API下载源代码并重新启动您的项目。 然后你会看到它的工作

答案 1 :(得分:0)

如果您使用模拟器转到DDMS,您将找到模拟器控制并在其中提供有效的lat lng并按发送.. 和Batter确保在清单中提及Internet权限...

    try {
        Geocoder geocoder;
        List<Address> addresses;

        geocoder = new Geocoder(this, Locale.getDefault());

        double longitude = 23.00000;
        double latitude = 72.00000;
        addresses = geocoder.getFromLocation(longitude, latitude, 1);

        Toast.makeText(this, addresses.size() + "", Toast.LENGTH_LONG)
                .show();

        String address = addresses.get(0).getAddressLine(0);
        String city = addresses.get(0).getAddressLine(1);
        String country = addresses.get(0).getAddressLine(2);

        if(address==null)
        address="";
        if(city==null)
            city="";
        if(country==null)
            country="";

        Toast.makeText(this, address + "  " + city + " " + country,
                Toast.LENGTH_LONG).show();

    } catch (Exception e) {
        Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
    }

答案 2 :(得分:0)

我不确定这是否会有所帮助,但我认为你得到的是IOException。看看LogCat。另请参阅this

答案 3 :(得分:0)

如果平台中没有后端服务,Geocoder查询方法将返回一个空列表。

参考 - http://developer.android.com/reference/android/location/Geocoder.html

答案 4 :(得分:0)

在try循环中使用条件address.size()> 0修复它。

我并没有真正发现真正的问题在哪里,但是似乎循环发生了两次,并且为时过早,因为我可能使循环发生了两次,结果是空的,结果是好。 >

也许是我作为两个地图和日期通过意图而来的。 但对我来说固定