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