有沒有什麼辦法可以實現縮放監聽器,只要縮放級別發生變化就可以觸發事件。到目前爲止,我已經使用onUserinteraction方法手動檢查變化的縮放級別。 另一件事是我想要動態地添加/刪除疊加層。到目前爲止,我所做的是在onUserinteraction方法中,我調用一個函數,它使用mapOverlays.add()函數動態地添加疊加層,並且實際上添加會動態發生。但不知何故,mapOverlays.remove()函數不刪除覆蓋Android地圖覆蓋問題
//Function for adding first set of markers
public void setOverlay()
{
worldLength = World.length;
mapOverlays = mapView.getOverlays();
drawable0 = this.getResources().getDrawable(R.drawable.marker);
itemizedOverlay0 = new MyItemizedOverlay(drawable0);
for (int i = 0; i < worldLength; i++)
{
itemizedOverlay0.addOverlay(World[i]);
}
mapOverlays.add(itemizedOverlay0);
mapView.postInvalidate();
}
//Function for adding second set of markers
public void setOverlay1()
{
mapView.setStreetView(true);
usaLength = USA.length;
mexicoLength = Mexico.length;
mapOverlays = mapView.getOverlays();
drawable1 = this.getResources().getDrawable(R.drawable.marker);
itemizedOverlay1 = new MyItemizedOverlay(drawable1);
itemizedOverlay2 = new MyItemizedOverlay(drawable1);
for (int i = 0; i < usaLength; i++) {
itemizedOverlay1.addOverlay(USA[i]);
}
for (int i = 0; i < mexicoLength; i++) {
itemizedOverlay2.addOverlay(Mexico[i]);
}
mapOverlays.add(itemizedOverlay1);
mapOverlays.add(itemizedOverlay2);
mapView.postInvalidate();
}
public void onUserInteraction() {
super.onUserInteraction();
if(mapView.getZoomLevel()>3)
{
mapOverlays.remove(itemizedOverlay0);
setOverlay1();
//the above happens
}
else if(mapView.getZoomLevel()<=3 && mapOverlays.size()>5)
{
mapOverlays.remove(itemizedOverlay1);
mapOverlays.remove(itemizedOverlay2);
//the above doesn't
setOverlay();
}
else if(mapView.getZoomLevel()<=3)
{
}
}
這是好的,一定會嘗試和回來,我需要知道盡快我無法使用mapOverlays.remove(itemizedOverlayname);任何直接的幫助將不勝感激.....感謝百萬 –
你試過調用MapView.invalidate()而不是mapView.postInvalidate()? invalidate()應該根據文檔立即重繪地圖(至少對於我之前完成的所有地圖案例)。 – momo
已經完成並且沒有工作,我只注意到remove方法只會刪除覆蓋對象的第一次出現,但是我的錯誤代碼會多次添加相同的覆蓋,因此我無法看到結果。將修復和正確回答我自己的問題....順便說一句我正在實施烏拉圭回合變焦監聽者的想法! –