0

我的问题是,如果我尝试使用 geocoder.getFromLocationName("California",1) 函数获取地址,它会找到该地址,但如果我在我的设备(小米 Mi5、Oreo)上对其进行测试,它会返回一个空列表。

提前致谢!

private void geoLocate(){
    Log.d(TAG, "geoLocate: geolocating");
    String searchString = mSearchText.getText().toString();
    Log.d(TAG, "geoLocate: Searching for " + searchString);
    Geocoder geocoder = new Geocoder(this);
    List<Address> list = new ArrayList<>();

    try{
        if(geocoder.isPresent()){
             list = geocoder.getFromLocationName(searchString,1);
        } else{
            Log.d(TAG, "geoLocate: GEOCODER IS NOT PRESENT");
        }

    }catch (IOException e){
        Log.e(TAG, "geoLocate: IOException " + e.getMessage() );
    }

    if(list.size() > 0 ){
        Address address = list.get(0);
        Log.d(TAG, "geoLocate: found a location: " + address.toString());
    }else{
        Log.d(TAG, "geoLocate: Location not found");
    }

}
4

2 回答 2

0

它可能是由制造商实施中的错误或故意缺少该功能引起的。如此处所述:https ://developer.android.com/reference/android/location/Geocoder

Geocoder 类需要一个不包含在核心 android 框架中的后端服务。如果平台中没有后端服务,Geocoder 查询方法将返回一个空列表。使用 isPresent() 方法确定是否存在 Geocoder 实现。

于 2018-05-11T11:57:01.263 回答
0

您是否已在手机上为您的应用程序授予位置权限?如果没有.. 转到您的应用 >> 权限 >>> 位置权限...

于 2018-04-28T11:25:12.443 回答