2012-08-30 56 views

回答

2

onDraw文檔的MapView說

「我們繪製地圖背景(如適用裝載磚)」

你可以嘗試擴展的MapView和隱藏進度指示條的onDraw結束。但我的猜測是MapTiles會異步加載,因此您的進度條會在MapTiles全部加載之前完成。

+0

嘿,你有更新的解決方案嗎? thx –

+0

我不抱歉,現在幾年沒有做過任何Android開發。 –

0

在目前的MapView實現中,沒有直接的API來執行此操作。

4

您可以使用OnCameraChangeListenerOnMapLoadedCallback來模擬此行爲。

GoogleMap.OnCameraChangeListenerthe documentation

公共抽象無效onCameraChange(CameraPosition位置)

相機位置已改變後調用。在動畫過程中, 可能不會通知中間相機位置。它總是要求在動畫中的最後位置。

這是在主線程上調用的。

GoogleMap.OnMapLoadedCallbackthe documentation

公共抽象無效onMapLoaded()

圖時已完成渲染調用。這隻會被稱爲 一次。如果您想要再次通知 ,您必須請求另一個回叫。

如前所述那裏,onMapLoaded()將只調用一次,這樣的策略可能會要求每次onCameraChange被稱爲一個GoogleMap.OnMapLoadedCallback

這裏是一個(很簡單)的例子來說明答案:

public class MapsActivity extends FragmentActivity implements OnCameraChangeListener, OnMapLoadedCallback { 
    private GoogleMap googleMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 

     SupportMapFragment mapFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map); 
     googleMap = mapFragment.getMap(); 

     googleMap.setOnCameraChangeListener(this); 
    } 

    @Override 
    public void onMapLoaded() { 
     //TODO: Hide your progress indicator 
    } 

    @Override 
    public void onCameraChange(final CameraPosition cameraPosition) { 
     googleMap.setOnMapLoadedCallback(this); 

     //TODO: Show your progress indicator 
    } 
} 
+0

絕對是我在找的東西。似乎調用'onMapLoaded()'需要很長時間,但這是因爲地圖加載了所有的地方等等。絕對是正確的API。謝謝!應該是接受的答案恕我直言。 –