Android Geocoder返回null城市名称

时间:2016-07-22 23:27:57

标签: android location google-geocoder android-gps

我是Android开发的新手,以下是关于使用Geocoder获取当前位置的城市名称的代码,它返回null:

private void updateCurrentLocation(Location location){         double lat = 0.0,lng = 0.0;

    if (location != null) {
        lat = location.getLatitude();
        lng = location.getLongitude();
        Log.i("tag", "Latitute is" + lat + ", Longtitute is" + lng);
    } else {
        City_Name = "Unavailable";
    }
    List<Address> list = null;
    Geocoder geocoder = new Geocoder(this.getActivity());
    try {
        list = geocoder.getFromLocation(lat, lng, 1);
    } catch (IOException e) {
        e.printStackTrace();
    }

    //may provide multiple locations.

    if (list != null && list.size() > 0) {

            Address address = list.get(0);
            City_Name = address.getLocality();

    }
    Log.i("Try", "CityName:" + City_Name);
    //send empty message
    handler.sendEmptyMessage(1);
}

我打开了GPS服务,已经在Manifest中添加了ACCESS_FINE_LOCATION和INTERNET权限。此外,我在Stackoverflow中搜索了类似的问题,关于Geocoder返回null,但还没有找到有用的解决方案。其中一个是从Geocoder网站分析JSON,但它也不起作用。

任何人都可以帮忙吗?谢谢! 顺便说一句,有没有更好的解决方案来获得城市名称?谢谢!

1 个答案:

答案 0 :(得分:0)

如果“getFromLocation”方法为您提供一个空集,那么这是因为正在查找的服务器没有您传递它的坐标的地址信息。这也被注意到in the docs。因此,我认为您应该放手使用其他服务,例如Google Maps地理编码服务或其他服务,例如OpenStreetMap项目中的Nominatim。