2013-05-28 25 views
5

問題:Android的地圖 - animateCamera()方法不工作正確

1)地圖四處動畫,以達到所要求的位置(在代碼第4行),但它得到了放大到默認位置(代碼5日線)

2)我明白爲什麼這個問題發生,但我不知道如何解決它的[在指定的縮放級別保留在默認位置的地圖。 3)如果我改變第4行移動相機,而不是animateCamera這將工作,但我確實需要animateCamera()方法。

下面的代碼:

map=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap(); 
MarkerOptions options=new MarkerOptions().position(new LatLng(13.0810,80.2740)); 
map.addMarker(options); 
map.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(13.0810,80.2740)),4000,null); 
map.animateCamera(CameraUpdateFactory.zoomTo(15.5f),2000,null); 

回答

31

的問題是,你叫zoom之後你開始動畫到新的位置。這就是爲什麼它只是用最新的攝像頭替換上次的攝像頭更新操作。

你可以簡單地解決,通過建立更加準確的相機更新操作(這將包括經緯度變化和縮放級別的變化):

CameraPosition newCamPos = new CameraPosition(new LatLng(13.0810,80.2740), 
                15.5f, 
                map.getCameraPosition().tilt, //use old tilt 
                map.getCameraPosition().bearing); //use old bearing 
map.animateCamera(CameraUpdateFactory.newCameraPosition(newCamPos), 4000, null); 

或者由MaciejGórski指出的那樣,你可以只使用newLatLngZoom界面,其包括兩個LatLngzoom變化:

map.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(13.0810,80.2740), 15.5f), 4000, null); 
+3

更容易將只使用newLatLngZoom版本的工廠。 –

+0

yeap,you'r right :)我會用這個選項更新我的答案 –

+0

請注意,動畫不適用於lite模式,雖然簡單的淡入動畫本來就不錯 –

相關問題