我正在使用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()
可能会在这里工作,但这似乎只会返回叠加层,而不是它们的图标。
我是否在正确的轨道上?如何在不调整叠加坐标等的情况下更换图标?任何帮助或建议将在这里非常感谢! (希望我的解释很清楚;如果没有,请让我澄清!)提前感谢您的帮助!
答案 0 :(得分:0)
,您可以使用line ::
进行更改Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
只需将自己的图标放在可绘制文件夹中,然后使用
进行更新Drawable drawable = this.getResources().getDrawable(R.drawable.yourIcon);
欲了解更多信息:: get from here