我正在使用 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()
可能在这里工作,但这似乎只返回叠加层本身,而不是它们的图标。
我在正确的轨道上吗?如何在不调整覆盖坐标等的情况下替换图标?任何帮助或建议将不胜感激!(希望我的解释足够清楚;如果不是,请让我澄清!)提前感谢您的帮助!