簡體   English   中英

Android:在MyLocationOverlay中進行反向地理編碼的最佳方法?

[英]Android: Best way to do reverse geocoding in MyLocationOverlay?

我正在使用MyLocationOverlay來更新用戶駕駛時的位置地圖。 我正在嘗試實現一個文本視圖,以街道名稱,城市和州來顯示其當前位置。 一切正常,但MyLocationOverlay的更新頻率似乎導致地圖滯后並凍結了一兩秒鍾。 我不確定文本.setText方法是否導致其凍結或該方法被調用的次數。 用城市和州名更新用戶的正確方法是什么? 我正在使用新線程,這是正確的方法嗎? 這是MyLocationOverlay的onLocationChanged方法中的代碼:

@Override
public synchronized void onLocationChanged(Location location) {
    super.onLocationChanged(location);
    mLocation = location;
    // only move to new position if enabled and we are in an border-area
    if (this.isMyLocationEnabled() && animateToCurrentLocation) {
        mMapController.animateTo(getMyLocation());
    }

    this.runOnFirstFix(new Runnable() {
        public void run() {
            Log.d(TAG, "Running");
            if (mLocation != null) {
                Geocoder gc = new Geocoder(mContext, Locale.getDefault());

                try 
                {
                    List<Address> addresses = gc.getFromLocation(mLocation.getLatitude(), mLocation.getLongitude(), 1);
                    if (addresses != null && addresses.size() > 0) 
                    {
                        txtStreetAddress.setText(addresses.get(0).getThoroughfare() + " " + addresses.get(0).getLocality() + ", " + addresses.get(0).getAdminArea());
                    }
                } catch (IOException e) 
                {

                }
            }
        }
    });
}

您正在執行的地址解析器調用很可能是程序的瓶頸。 我會放慢您對地址解析器的請求,看看您的性能是否有所提高。 您可能會失去一些粒度,但是您的應用程序可能會響應更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM