如何从Android的MapView类更改覆盖图标?
问题描述:
我正在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()
可能在这里工作,但似乎只返回叠加本身,而不是他们的图标。
我在正确的轨道上吗?如何在不调整叠加坐标等的情况下更换图标?任何帮助或建议将不胜感激! (希望我的解释已经够清楚了;如果有什么不是,请让我澄清!)预先感谢您的帮助!
答
在这里你可以与在线::
Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
改变只是把自己的图标绘制文件夹,并更新
Drawable drawable = this.getResources().getDrawable(R.drawable.yourIcon);
欲了解更多信息::get from here
感谢您的建议,但我是abl e最初创建我的叠加层(在我的Map类中)。我只是无法从我的'ZoomSensitiveMapView'中替换它们的图标。如果我不清楚,我很抱歉。 – dwat