2013-05-28 9 views
5

Problema:Android Maps - metodo animateCamera() non funziona corretta

1) Mappa ottenendo animato per raggiungere la posizione desiderata (4 ° riga nel codice), ma ha ottenuto lo zoom nella posizione predefinita (linea 5 in codice)

[lasciando la mappa nella posizione predefinita a livello di zoom specificato]

2) capisco perché è il problema accadendo, ma non so come risolverlo.

3) Se cambio la 4a riga in moveCamera invece di animateCamera funzionerà, ma voglio metodo animateCamera().

Ecco il codice:

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); 

risposta

31

Il problema è che si chiama zoom subito dopo aver iniziato animando nella nuova posizione. Ecco perché sostituisce l'ultima azione di aggiornamento della fotocamera con quella nuova.

Si può semplicemente risolvere che con la creazione più accurata azione di aggiornamento della fotocamera (che includerebbe sia il cambiamento LatLng e modificare il livello di 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); 

ALTERNATIVA come sottolineato da MaciejGórski, si può semplicemente utilizzare newLatLngZoom interfaccia che comprende sia LatLng e zoom cambiamento:

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

Più facile sarebbe quella di utilizzare solo la versione newLatLngZoom sulla fabbrica. –

+0

yeap, hai ragione :) aggiornerò la mia risposta anche con questa opzione –

+0

Nota che le animazioni non funzionano in modalità lite, anche se una semplice animazione di dissolvenza sarebbe stata piacevole –

Problemi correlati