1

我正在使用 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()可能在这里工作,但这似乎只返回叠加层本身,而不是它们的图标。

我在正确的轨道上吗?如何在不调整覆盖坐标等的情况下替换图标?任何帮助或建议将不胜感激!(希望我的解释足够清楚;如果不是,请让我澄清!)提前感谢您的帮助!

4

1 回答 1

0

在这里你可以改变行::

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

只需将您自己的图标放在可绘制文件夹中并使用

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

欲了解更多信息 :: 从这里获取

于 2011-09-05T07:12:28.173 回答