2011-01-02 2 views
0

버튼을 클릭하면 오버레이를 켜고 끕니다.Android MapView 오버레이 전환하기

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)); 
    } 
}; 

이제 토글 오프 부분이 작동하지만 다시 가져 오지 않는 것 같습니다. 뭔가 빠졌습니까?

답변

3

내가 생각할 수있는 유일한 순간은 모든 오버레이를 추가 한 후 mapView.invalidate()를 호출하여 강제로 다시 그립니다.