2016-04-14 76 views
0

我試圖強制攝像機動畫到縮放級別和座標,儘可能精確地描述座標列表所佔用的區域。強制animateCamera完成動畫

到目前爲止,我有以下幾點:

private void focusListOfCoords(Collection<LatLng> coords) { 
    LatLngBounds.Builder coordsBoundsBuilder = new LatLngBounds.Builder(); 
    for (LatLng coord : coords) { 
    coordsBoundsBuilder.include(coord); 
    } 
    LatLngBounds coordsBounds = coordsBoundsBuilder.build(); 
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(coordsBounds, 50); 
    mMap.animateCamera(cameraUpdate); 
} 

上面的代碼,當放大所有的出路對整個世界只是平移視圖稍微對邊界的中心點中心。它沒有放大。

如果我將mMap.animateCamera(cameraUpdate)替換爲mMap.moveCamera(cameraUpdate),則投影會根據預期更改縮放級別(每種情況下都過多,但不在此點)和中心。

在試圖解決這個問題後,我注意到如果我爲animateCamera方法實現了CancelableCallback,我可以看到動畫被取消。

有沒有辦法強制動畫完成?如果不是,我該如何追捕動畫被取消的原因?

編輯:該解決方案可以在這個問題上找到:Android- animateCamera with CameraUpdateFactory.newCameraPosition does NOT zoom

總之,我的聽衆方法是調用動畫是返回false其中取消了動畫。

+0

[Android- animateCamera與CameraUpdateFactory.newCameraPosition不可縮放]可能的重複不會放大](http://stackoverflow.com/questions/32908913/android-animatecamera-with-cameraupdatefactory-newcameraposition-does-not-zoom) – nukeforum

回答

0

您可以嘗試使用不同的方法來實施。

其中之一是通過CameraUpdateFactory.newLatLngZoom(latlng, zoom)animateCamera。您可以使用此指定縮放級別。更多關於那here的信息。

或者您可以在將它傳遞到animateCamera之前先製作您的CameraView。您可以查看文檔here

不知道爲什麼或如何激怒onCancel()。也許有些東西在你的animateCamera電話後被解僱。嘗試使用duration參數來更改動畫的速度並檢查更改。

+0

您的第二個推薦是我在我提供的代碼片段中所做的。你的第一個建議是簡單地內聯工廠調用,不會改變動畫的結果。我會嘗試調整持續時間,看看是否有幫助。 – nukeforum

+0

我在另一個問題中找到了答案,謝謝你的幫助。 – nukeforum