標籤:android   blog   class   code   c   java   
在Android 2D地圖SDK V2.2.0中,存在一個bug ,當getCameraPositon().zoom得到的值都是3.0,如果在應用中不得不用這一版本的2D地圖,又必須取得這個值時(如果非必須不推薦哈),這裡有一個不是很傳統的方式去擷取,通過在地圖上添加一個TileOverlay,這個Overlay呢,不載入任何新的圖層或者資料,僅僅是為了取得最新的level層級:
代碼如下:
?
 
  
   
   | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | mAmap = mMapView.getMap();           // tileoverlay,只用於取level不加任何資料           TileProvider tileprovider = newUrlTileProvider(256, 256) {               @Override              publicURL getTileUrl(intx, inty, intlevel) {                  // 拿到當前的層級                  if(mLevel != level) {                     mLevel = level;                     // 這裡是子線程,不能直接操作ui,                     // ps:mLevel的擷取不要通過OncameraChangeListener進行處理                     // 因為線程的先後關係,在快速縮放時,取到的mLevel有可能不是最新的                     handler.sendEmptyMessage(0);                  }                  // 這裡不載入新的圖層所以為null                  returnnull;              }           };            TileOverlayOptions tileOverlayOptions = newTileOverlayOptions();           tileOverlayOptions.tileProvider(tileprovider);           // 將tileovelay加到地圖       mAmap.addTileOverlay(tileOverlayOptions); | 
 
  
效果如下:
具體代碼(替換key)和apk見附件