Migra de Current Place (heredado) a Nearby Search (nuevo)

Desarrolladores del Espacio Económico Europeo (EEE)

El SDK de Places para Android (legacy) admite Current Place (legacy). Si conoces Current Place (heredado), Nearby Search (nuevo) realiza los siguientes cambios:

  • Utiliza un nuevo modelo de precios. Para obtener información sobre los precios de todas las APIs, consulta SDK de Places para Android (nuevo).

  • Debes inicializar tu app llamando al método Places.initializeWithNewPlacesApiEnabled(). Para obtener más información sobre cómo seleccionar el servicio de la API de Places, consulta Configura tu proyecto de Google Cloud.

  • Se requiere el enmascaramiento de campos. Debes especificar qué campos deseas que se muestren en la respuesta. No hay una lista predeterminada de campos devueltos. Si omites esta lista, los métodos mostrarán un error.

  • La Búsqueda cercana (nueva) no admite PlaceLikelihood. Con Nearby Search (nuevo), puedes usar el orden de los resultados para determinar la ubicación más probable.

Ejemplos de Nearby Search (nuevo)

Para obtener más información y ejemplos sobre cómo usar Nearby Search (nuevo), consulta la documentación de Nearby Search (nuevo).

Cómo usar Nearby Search (nuevo) para obtener el lugar actual

En el siguiente ejemplo, se muestra cómo obtener el lugar actual con Nearby Search (nuevo) reemplazando el uso de PlacesClient.findCurrentPlace() por PlacesClient.searchNearby():

public class MainActivity extends extends AppCompatActivity {

  private FusedLocationProviderClient fusedLocationProviderClient;

  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    // ...

    // get permission
    if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.ACCESS_FINE_LOCATION)
        == PackageManager.PERMISSION_GRANTED) {

      // get location and search
      fusedLocationProviderClient
        .getLastLocation()
        .addOnSuccessListener(
            this,
            location -> {
              if (location != null) {
                LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
                CircularBounds circle = CircularBounds.newInstance(latLng, 10);
                List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);

                SearchNearbyRequest.Builder request = SearchNearbyRequest.builder(circle, placeFields);

                placesClient
                    .searchNearby(request.build())
                    .addOnSuccessListener(response ->
List<Place> places = response.getPlaces();)
                    .addOnFailureListener(
                        exception -> {
                          // handle failure
                        });
              } else {
                // failed to get location.
              }
            })
        .addOnFailureListener(
            e -> {
              // handle error
            });

    } else {
      ActivityCompat.requestPermissions(
          this,
          new String[] {Manifest.permission.ACCESS_FINE_LOCATION},
          PERMISSION_REQUEST_CODE);
    }

  }
}