切换Android MapView覆盖

切换Android MapView覆盖,android,android-maps,Android,Android Maps,我正在尝试执行以下操作,在一个按钮上单击以打开和关闭覆盖 List<Overlay> savedOverlays; Button testButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MapView mapView = (MapView) findViewB

我正在尝试执行以下操作,在一个按钮上单击以打开和关闭覆盖

List<Overlay> savedOverlays;
Button testButton;
@Override
public void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);

setContentView(R.layout.main);
MapView mapView = (MapView) findViewById(R.id.mapview);
testButton = (Button) findViewById(R.id.TestButton);
testButton.setOnClickListener(testButtonClickListener);
mapView.setBuiltInZoomControls(true);
setOverlays(mapView);
}
private void setOverlays(MapView mapView) {
    List<Overlay> mapOverlays = getOverlays(mapView);
Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, this);
GeoPoint point = new GeoPoint(19240000,-99120000);
OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!");
GeoPoint point2 = new GeoPoint(35410000, 139460000);
OverlayItem overlayitem2 = new OverlayItem(point2, "Sekai, konichiwa!", "I'm in Japan!");
itemizedoverlay.addOverlay(overlayitem);
itemizedoverlay.addOverlay(overlayitem2);
mapOverlays.add(itemizedoverlay);

}

private List<Overlay> getOverlays(MapView mapView) {
    List<Overlay> mapOverlays = mapView.getOverlays();
    return mapOverlays;
}

private void toggleOverlays(MapView mapView){
    List<Overlay> mapOverlays = mapView.getOverlays();
    if (mapOverlays.isEmpty())
    {
        setOverlays(mapView);
    }
    else
    {
        mapOverlays.removeAll(getOverlays(mapView));
    }
}

private OnClickListener testButtonClickListener = new OnClickListener() {
    public void onClick(View V){
        toggleOverlays((MapView) findViewById(R.id.mapview));
    }
};
列出savedOverlays;
按钮测试按钮;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MapView MapView=(MapView)findViewById(R.id.MapView);
testButton=(Button)findViewById(R.id.testButton);
setOnClickListener(testButtonClicklListener);
mapView.SetBuilTinZoomControl(真);
setOverlays(地图视图);
}
专用void setOverlays(MapView MapView){
列表mapOverlays=getOverlays(mapView);
Drawable Drawable=this.getResources().getDrawable(R.Drawable.androidmarker);
HelloItemizedOverlay itemizedoverlay=新HelloItemizedOverlay(可绘制,此);
地质点=新的地质点(19240000,-99120000);
OverlayItem OverlayItem=新的OverlayItem(指向“你好,芒多!”,“我在墨西哥城!”);
地质点2=新的地质点(35410000、139460000);
OverlayItem overlayitem2=新的OverlayItem(第2点,“Sekai,Konichawa!”,“我在日本!”);
itemizedoverlay.addOverlay(overlayitem);
itemizedoverlay.addOverlay(overlayitem2);
添加(itemizedoverlay);
}
私有列表getOverlays(MapView MapView){
List mapOverlays=mapView.getOverlays();
返回地图覆盖图;
}
专用空心切换覆盖(MapView MapView){
List mapOverlays=mapView.getOverlays();
if(mapOverlays.isEmpty())
{
setOverlays(地图视图);
}
其他的
{
removeAll(getOverlays(mapView));
}
}
私有OnClickListener TestButtonClicklListener=new OnClickListener(){
公共void onClick(视图V){
切换覆盖((MapView)findViewById(R.id.MapView));
}
};

现在切换关闭部分可以工作了,但它似乎不想把它们带回来,我缺少什么吗?

目前,我唯一能想到的是在添加所有覆盖后调用mapView.invalidate(),以强制重新绘制。

目前我唯一能想到的是调用mapView.invalidate()添加所有覆盖后,强制重画