2011-09-05 53 views
1

我正在Android的地圖上工作,其中有幾個覆蓋圖標覆蓋它。我的問題是每個疊加層的圖標都是靜態的,並且在放大和縮小時不會與地圖的其餘部分一起調整大小。如果用戶放大或縮小圖標並且圖標太大或太小,這會變得很尷尬。如何從Android的MapView類更改覆蓋圖標?

我的解決方案是創建具有不同大小的每個圖標的多個圖像文件。但是,我不知道如何從我的(擴展)的MapView類引用這些圖標後,我已經從我的創造。他

public class Map extends MapActivity { 
    ... 
    public onCreate() { 
     ... 
     //Very simplified copy of my working code: 

     Drawable defaultDrawable = this.getResources().getDrawable(R.drawable.myicon); 
     List<Overlay> mapOverlays = mapView.getOverlays(); 
     ItemizedOverlay overlayManager = new OverlayManager(defaultDrawable, this); 
     OverlayItem myOverlay = new OverlayItem(...); 
     overlayManager.addOverlay(myOverlay); 
    } 
} 

我擴展了MapView類,這樣我可以觸發縮放事件。該dispatchDraw()方法是我打算把我的圖標替換代碼,但我不知道我怎麼可以從這裏進入地圖現有的覆蓋和他們的圖標(和改變只是他們的圖標):

public class ZoomSensitiveMapView extends MapView { 

    private int oldZoomLevel; 

    ... 

    public void dispatchDraw(Canvas canvas) { 
     super.dispatchDraw(canvas); 
     if (getZoomLevel() != oldZoomLevel) { 

      if (getZoomLevel() > 15) { 
       //Zoomed in closer 
       //Replace icons with bigger copies 
      } 
      else { 
       //Zoomed out further 
       //Replace icons with smaller copies 
      } 
      oldZoomLevel = getZoomLevel(); 
     } 
    } 
} 

我想getOverlays()可能在這裏工作,但似乎只返回疊加本身,而不是他們的圖標。

我在正確的軌道上嗎?如何在不調整疊加座標等的情況下更換圖標?任何幫助或建議將不勝感激! (希望我的解釋已經夠清楚了;如果有什麼不是,請讓我澄清!)預先感謝您的幫助!

回答

0

在這裏你可以與在線::

Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker); 

改變只是把自己的圖標繪製文件夾,並更新

Drawable drawable = this.getResources().getDrawable(R.drawable.yourIcon); 

欲瞭解更多信息::get from here

+0

感謝您的建議,但我是abl e最初創建我的疊加層(在我的Map類中)。我只是無法從我的'ZoomSensitiveMapView'中替換它們的圖標。如果我不清楚,我很抱歉。 – dwat