2011-09-05 56 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