2012-06-26 21 views
2

我有一個ViewSwitcher的應用程序,它包含一個MapView和另一個View,我想將MapView的位圖保存爲圖像。這種運作良好,如果MapView獲得通過做這樣的事情一直可見至少一次:如果MapView的位圖從未出現失敗

mapView.setDrawingCacheEnabled(true); 
Bitmap bm = mapView.getDrawingCache(); 
/* ... save bitmap ... */ 

問題是,如果的MapView一直沒有看到,getDrawingCache()回報null爲位圖。有什麼辦法可以解決這個問題嗎?

+0

[GoogleMap.snapshot()](http://stackoverflow.com/a/18231795/2531709)來拯救! – StefanTo

回答

1

我發現如何去做。有兩件事情要做:

爲了得到位圖,創建自己的一個,使MapView的平局到它:

Bitmap bm = Bitmap.createBitmap(400, 400, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bm); 
    mapView.draw(canvas); 

如果你這樣做,你必須在所有的位圖的疊加,而不是地圖圖像(瓦片)。要實現這一點,您必須在繪製地圖到您的位圖之前調用mapView.preLoad()

+0

這很好,但我在'MapView'上找不到'preLoad()'方法?奇怪的是,它被記錄。這是一個'com.google.android.gms.maps.MapView',如果這有所作爲。 –

+2

這與您使用的是Android Maps API V2有很大不同 - 它們已經改變了一切,並且根本不可能獲取地圖的圖像 - 因爲它們現在使用SurfaceView來渲染它:-( – Ridcully

+0

啊,該死的,謝謝,不過! –

相關問題