0

我正在使用 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) 
                {

                }
            }
        }
    });
}
4

1 回答 1

0

您正在进行的地理编码器调用很可能是您程序中的瓶颈。我会减慢您对地理编码器的请求,看看您是否体验到性能提升。您可能会失去一些粒度,但您的应用程序可能会响应更快。

于 2012-05-09T19:16:37.047 回答