[英]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.