【发布时间】:2012-11-26 17:54:22
【问题描述】:
我的MapView 出现异常行为,我正在使用 RoboGuice,但我不确定它是否会影响问题。
问题是,如果我在我的地图上启用MyLocationListener,那么它上面的每个叠加层都会无限地不断重绘。
看看这个例子:
我的地图活动
@ContentView(R.layout.map)
public class MyMapActivity extends RoboMapActivity {
@InjectView(R.id.map)
private MapView map;
private List<Overlay> mapOverlays;
private MyLocationOverlay compass;
private TestOverlay testOverlay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
map.setBuiltInZoomControls(true);
mapOverlays = map.getOverlays();
compass = new MyLocationOverlay(this, map);
testOverlay = new TestOverlay();
}
@Override
protected void onResume() {
super.onResume();
compass.enableCompass();
refreshMap();
}
private void refreshMap() {
mapOverlays.clear();
mapOverlays.add(testOverlay);
}
@Override
protected void onPause() {
compass.disableCompass();
super.onPause();
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
测试覆盖
public class TestOverlay extends Overlay {
@Override
public void draw(Canvas arg0, MapView arg1, boolean arg2) {
System.out.println("drawing...");
super.draw(arg0, arg1, arg2);
}
}
如果我运行它,我会得到drawing... 每秒打印大约十次。
但是,如果我通过注释掉这一行来避免启用MyLocationOverlay 的指南针:
// compass.enableCompass();
然后重绘停止。
知道为什么会这样吗?是错误还是我做错了什么?
编辑
刚刚在一个没有使用RoboGuice的项目中复现,问题依旧。
我想从现在开始我会不用那个指南针了
【问题讨论】:
标签: android android-mapview redraw mylocationoverlay