public class MapsActivity extends FragmentActivity { private GoogleMap mMap; // Might be null if Google Play services APK is not available. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); setUpMapIfNeeded(); } @Override protected void onResume() { super.onResume(); setUpMapIfNeeded(); } /** * Sets up the map if it is possible to do so (i.e., the Google Play services APK is correctly * installed) and the map has not already been instantiated.. This will ensure that we only ever * call {@link #setUpMap()} once when {@link #mMap} is not null. *

* If it isn't installed {@link SupportMapFragment} (and * {@link com.google.android.gms.maps.MapView MapView}) will show a prompt for the user to * install/update the Google Play services APK on their device. *

* A user can return to this FragmentActivity after following the prompt and correctly * installing/updating/enabling the Google Play services. Since the FragmentActivity may not * have been completely destroyed during this process (it is likely that it would only be * stopped or paused), {@link #onCreate(Bundle)} may not be called again so we should call this * method in {@link #onResume()} to guarantee that it will be called. */ private void setUpMapIfNeeded() { // Do a null check to confirm that we have not already instantiated the map. if (mMap == null) { // Try to obtain the map from the SupportMapFragment. mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); // Check if we were successful in obtaining the map. if (mMap != null) { setUpMap(); } } } /** * This is where we can add markers or lines, add listeners or move the camera. In this case, we * just add a marker near Africa. *

* This should only be called once and when we are sure that {@link #mMap} is not null. */ final float zoomLevel = 10f; float zoomBy = 0.5f; private void setUpMap() { LatLng ternopil = new LatLng(49.56085221, 25.6036377); mMap.addMarker(new MarkerOptions().position(ternopil).title("Marker")); final CameraUpdate center= CameraUpdateFactory.newLatLngZoom(ternopil, zoomLevel); mMap.moveCamera(center); new Handler().postDelayed(new Runnable() { @Override public void run() { long delay = 0; float targetZoomLevel = 12f; while (zoomLevel + zoomBy < targetZoomLevel) { new Handler().postDelayed(new Runnable() { @Override public void run() { mMap.animateCamera(CameraUpdateFactory.zoomBy(zoomBy), 1000, null); } }, delay); delay += 2000; // Change this to whatever is good on the device zoomBy += 0.5f; } } }, 2000); } }