如何从Android MapView类更改叠加图标?

时间:2011-09-05 07:06:31

标签: android maps android-mapview mapactivity

我正在使用Android上的地图,其中有几个覆盖图标。我的问题是每个叠加层的图标都是静态的,并且在放大和缩小时不会与地图的其余部分一起调整大小。如果用户缩放太远或图标显得太大或太小,这可能会变得很尴尬。

我的解决方案是创建多个图像文件,每个图标的大小不同。但是,我不确定如何从我的(扩展)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()可能会在这里工作,但这似乎只会返回叠加层,而不是它们的图标。

我是否在正确的轨道上?如何在不调整叠加坐标等的情况下更换图标?任何帮助或建议将在这里非常感谢! (希望我的解释很清楚;如果没有,请让我澄清!)提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

,您可以使用line ::

进行更改
Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);

只需将自己的图标放在可绘制文件夹中,然后使用

进行更新
Drawable drawable = this.getResources().getDrawable(R.drawable.yourIcon);

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