title: Why won't Google maps auto zoom to user location when it first starts?
body: <p>When the user first enters the GoogleMapsActivity it does not automatically take them to their location, the user has to click the little location icon button at the top right and it will take them to their location.  </p>
  
  <p>I have tried using newLatLngZoom(latLng, zoom) but that didn't work.  And I went through all the suggested questions before posting this question, and none worked.  Some were in iOS too.  I am using Android.</p>
  
  <pre><code>public class AppetiteMapsActivity extends FragmentActivity implements OnMapReadyCallback,
      GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, com.google.android.gms.location.LocationListener
  
  {
  
  private GoogleMap mMap;
  private GoogleApiClient googleApiClient;
  private LocationRequest locationRequest;
  private static final String TAG = "AppetiteMapsActivity";
  private Location lastLocation;
  private Marker currentUserLocationMarker;
  private LocationManager locationManager;
  private com.google.android.gms.location.LocationListener listener;
  private static final int Request_User_Location_Code= 99;
  
  private long UPDATE_INTERVAL = 2 * 1000;  /* 10 secs */
  private long FASTEST_INTERVAL = 2000; /* 2 sec */
  
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_appetite_maps);
  
  
      if(Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M)
      {
          checkUserLocationPermission();
      }
  
      // Obtain the SupportMapFragment and get notified when the map is ready to be used.
      SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
              .findFragmentById(R.id.map);
      mapFragment.getMapAsync(this);
  
      checkLocation();
  
  }
  
  
  @Override
  public void onMapReady(GoogleMap googleMap) {
      mMap = googleMap;
  
      // Add a marker in current user location and move the camera
      if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
      {
          buildGoogleApiClient();
          // Call current location of user
          mMap.setMyLocationEnabled(true);
      }
  
  }
  
  public boolean checkUserLocationPermission()
  {
      if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)
      {
          if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION))
          {
              ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, Request_User_Location_Code);
          }
          else
              {
              ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, Request_User_Location_Code);
              }
              return false;
      }
      else
      {
          return true;
      }
  }
  
  @Override
  public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
  {
      switch(requestCode)
      {
          case Request_User_Location_Code:
  
              if(grantResults.length &gt; 0 &amp;&amp; grantResults[0] == PackageManager.PERMISSION_GRANTED)
              {
                  if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
                  {
                      if (googleApiClient == null)
                      {
                          buildGoogleApiClient();
                      }
                      mMap.setMyLocationEnabled(true);
                  }
  
              }
  
              else
              {
                  Toast.makeText(this, R.string.on_request_permission_gps_not_located, Toast.LENGTH_LONG).show();
              }
              return;
      }
  }
  
  protected synchronized void buildGoogleApiClient()
  {
      googleApiClient = new GoogleApiClient.Builder(this)
              .addConnectionCallbacks(this)
              .addOnConnectionFailedListener(this)
              .addApi(LocationServices.API)
              .build();
  
      googleApiClient.connect();
  }
  
  @Override
  public void onConnected(Bundle bundle) {
      {
  
          locationRequest = new LocationRequest();
          locationRequest.setInterval(1100);
          locationRequest.setFastestInterval(1100);
          locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
  
          if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
          {
              LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
          }
      }
  }
  
  @Override
  public void onConnectionSuspended(int i) {
      Log.i(TAG, "Connection Suspended");
      googleApiClient.connect();
  }
  
  @Override
  public void onConnectionFailed(ConnectionResult connectionResult) {
      Log.i(TAG, "Connection failed. Error: " + connectionResult.getErrorCode());
  }
  
  @Override
  protected void onStart() {
      super.onStart();
      if (googleApiClient != null) {
          googleApiClient.connect();
      }
  }
  
  @Override
  protected void onStop() {
      super.onStop();
      if (googleApiClient.isConnected()) {
          googleApiClient.disconnect();
      }
  }
  
  protected void startLocationUpdates() {
      // Create the location request
      locationRequest = LocationRequest.create()
              .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
              .setInterval(UPDATE_INTERVAL)
              .setFastestInterval(FASTEST_INTERVAL);
      // Request location updates
      if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &amp;&amp; ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
          return;
      }
      LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient,
              locationRequest, this);
      Log.d("reque", "---&gt;&gt;&gt;&gt;");
  }
  
  @Override
  public void onLocationChanged(Location location)
  {
      lastLocation = location;
      if (currentUserLocationMarker!=null)
      {
          currentUserLocationMarker.remove();
      }
  
      LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
  
      MarkerOptions markerOptions = new MarkerOptions();
      markerOptions.position(latLng);
      markerOptions.title(getString(R.string.user_current_location_marker_title));
      markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW));
  
      currentUserLocationMarker = mMap.addMarker(markerOptions);
  
  
      mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
      mMap.animateCamera(CameraUpdateFactory.zoomBy(14));
  
      if(googleApiClient != null)
      {
          LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, this);
      }
  
  }
  
  private boolean checkLocation() {
      if(!isLocationEnabled())
          showAlert();
      return isLocationEnabled();
  }
  
  private void showAlert() {
      final AlertDialog.Builder dialog = new AlertDialog.Builder(this);
      dialog.setTitle(R.string.show_alert_title_enable_location)
              .setMessage(getString(R.string.show_alert_location_settings_off_1) +
                      getString(R.string.show_alert_location_settings_off_2))
              .setPositiveButton(R.string.show_alert_positive_button_location_settings, new DialogInterface.OnClickListener() {
                  @Override
                  public void onClick(DialogInterface paramDialogInterface, int paramInt) {
  
                      Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                      startActivity(myIntent);
                  }
              })
              .setNegativeButton(R.string.explain_negative_button, new DialogInterface.OnClickListener() {
                  @Override
                  public void onClick(DialogInterface paramDialogInterface, int paramInt) {
  
                  }
              });
      dialog.show();
  }
  
  private boolean isLocationEnabled() {
      locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
      return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ||
              locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
  }
  
  }
  </code></pre>
  
  <p>I expect Google Maps to automatically go to the users location when they first go into the Google Maps Activity, but instead the user has to click the location button at the top right corner to send them there. Thanks for your help and advice in advanced!  </p>