繁体   English   中英

Geocoder在isPresent()上返回false

[英]Geocoder returns false on isPresent()

因此,我在应用程序中编写了一些地图代码,它可以在手机上正常工作,但遗憾的是,它在我的模拟器上无法正常工作,这对我来说不够舒适,这是代码:

String  searchString = mSearchText.getText().toString();

Geocoder geocoder = new Geocoder(this);
List<Address> list = new ArrayList<>();
try{
    int i=0;
    while(list.size()==0 && i<10) {
        boolean a = geocoder.isPresent();
        list = geocoder.getFromLocationName(searchString,1);
        i++;
    }
}catch(IOException e){
    Log.d(TAG, "geoLocate: IOException " + e.getMessage());
}

因此,当我调试它时,我在模拟器上看到变量“ a”始终为假。

我使用Visual Studio的Android模拟器,因为我有一个AMD处理器(Ryzen 7 1800x),上面安装了Google Play商店和Google Play服务(地图工作正常,只是地理编码器无法工作),现在可以通过某种方式对其进行修复?

正如我在https://developer.android.com/reference/android/location/Geocoder.html网站上阅读的那样 “如果平台中没有后端服务,则Geocoder查询方法将返回一个空列表。” 我能以某种方式获得服务吗? 可以在我的模拟器上下载它吗?

首先,isPresent()是静态方法,因此调用应为

Geocoder.isPresent();

IsPresent方法“如果实现了Geocoder方法getFromLocation和getFromLocationName,则返回true”,否则返回false。 某些模拟器未安装地理编码器服务。 是方法

geocoder.getFromLocationName 

返回您需要的还是一个空数组?

您的代码段可以在Nexus 6P Android 7.0 API 24仿真器上正常运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM