1
我正在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()
可能在這裏工作,但似乎只返回疊加本身,而不是他們的圖標。
我在正確的軌道上嗎?如何在不調整疊加座標等的情況下更換圖標?任何幫助或建議將不勝感激! (希望我的解釋已經夠清楚了;如果有什麼不是,請讓我澄清!)預先感謝您的幫助!
感謝您的建議,但我是abl e最初創建我的疊加層(在我的Map類中)。我只是無法從我的'ZoomSensitiveMapView'中替換它們的圖標。如果我不清楚,我很抱歉。 – dwat