我正在使用MyLocationOverlay在用户驾驶时更新地图。我正在尝试实现一个文本视图,根据街道名称,城市和州显示其当前位置。这一切都很好但似乎MyLocationOverlay的更新频率导致地图滞后并冻结一两秒。我不确定文本.setText方法是否导致它冻结或者方法被调用的次数。使用名称city和state实现更新用户的正确方法是什么?我正在使用新线程这是正确的方法吗?这是我在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)
{
}
}
}
});
}
答案 0 :(得分:0)
您正在制作的地理编码器电话很可能是您计划中的瓶颈。我会减慢您对地理编码器的请求,看看您是否体验到了改进。您可能会失去一些粒度,但您的应用程序可能会更具响应性。