title: Builds the map only when the GoogleApiClient is successfully connected?
body: <p>I'm developing an Android app for exercise, to better understand the Google maps api . In this apps i want to show some marker and if Android knows the user's current position I want to show It on the maps. Following the google tutorial I do it. But I have a doubt on the better way to get the maps and make the Google Api Client connection. In the tutorial <a href="https://developers.google.com/maps/documentation/android-api/current-places-tutorial" rel="nofollow noreferrer">https://developers.google.com/maps/documentation/android-api/current-places-tutorial</a> the developer builds the map only when the Google Api Client is successfully connected. Is It correct to do in this way in my study case ? In my case the important thing is to show some markers position on the maps and only if is It possible also show the current user position ?
  In my mind i would have done in contrary way : before build maps and only in maps ready callback makes the GoogleApiClient connection. ( I think the Api client connection is needed only to get the current location position right ?) </p>
  
  <p>In the tutorial they do in this way :</p>
  
  <pre><code>@Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          .....
          buildGoogleApiClient();
          mGoogleApiClient.connect();
          ....
      }
     /**
       * Builds a GoogleApiClient.
       * Uses the addApi() method to request the Google Places API and the Fused Location Provider.
       */
      private synchronized void buildGoogleApiClient() {
          mGoogleApiClient = new GoogleApiClient.Builder(this)
                  .enableAutoManage(this /* FragmentActivity */,
                          this /* OnConnectionFailedListener */)
                  .addConnectionCallbacks(this)
                  .addApi(LocationServices.API)
                  .addApi(Places.GEO_DATA_API)
                  .addApi(Places.PLACE_DETECTION_API)
                  .build();
          createLocationRequest();
      }
  
   @Override
      public void onConnected(Bundle connectionHint) {
          getDeviceLocation();
          // Build the map.
          SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                  .findFragmentById(R.id.map);
          mapFragment.getMapAsync(this);
      }
  
      */
      @Override
      public void onMapReady(GoogleMap map) {
          .... do stuff....}
  </code></pre>
  
  <p>I would have done in the following way :</p>
  
  <pre><code>@Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          .....
          buildGoogleApiClient();
  
           // Build the map.
          SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                  .findFragmentById(R.id.map);
          mapFragment.getMapAsync(this);
  
      }
     /**
       * Builds a GoogleApiClient.
       * Uses the addApi() method to request the Google Places API and the Fused Location Provider.
       */
      private synchronized void buildGoogleApiClient() {
          mGoogleApiClient = new GoogleApiClient.Builder(this)
                  .enableAutoManage(this /* FragmentActivity */,
                          this /* OnConnectionFailedListener */)
                  .addConnectionCallbacks(this)
                  .addApi(LocationServices.API)
                  .addApi(Places.GEO_DATA_API)
                  .addApi(Places.PLACE_DETECTION_API)
                  .build();
          createLocationRequest();
      }
  
   @Override
      public void onConnected(Bundle connectionHint) {
          getDeviceLocation();
  
      }
  
      */
      @Override
      public void onMapReady(GoogleMap map) {
           mGoogleApiClient.connect();
           ----do stuff....
      }
  </code></pre>