簡體   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