Eseguire la migrazione da Find Current Place (legacy) a Nearby Search (nuovo)

Sviluppatori dello Spazio economico europeo (SEE)

Places SDK for Android (legacy) supporta Luogo attuale (legacy). Se hai familiarità con Luogo attuale (legacy), Nearby Search (New) apporta le seguenti modifiche:

  • Utilizza un nuovo modello di prezzi. Per informazioni sui prezzi di tutte le API, consulta Places SDK for Android (New).

  • Devi inizializzare l'app chiamando il metodo Places.initializeWithNewPlacesApiEnabled(). Per ulteriori informazioni sulla selezione del servizio API Places, vedi Configurare il progetto Google Cloud.

  • La mascheratura dei campi è obbligatoria. Devi specificare i campi che vuoi che vengano restituiti nella risposta. Non esiste un elenco predefinito di campi restituiti. Se ometti questo elenco, i metodi restituiscono un errore.

  • La ricerca nelle vicinanze (nuova) non supporta PlaceLikelihood. Con Nearby Search (nuova), puoi utilizzare l'ordine dei risultati per determinare la posizione più probabile.

Esempi di Nearby Search (New)

Per ulteriori informazioni ed esempi su come utilizzare Nearby Search (New), consulta la documentazione di Nearby Search (New).

Utilizzare Nearby Search (nuova) per ottenere il Luogo attuale

Il seguente esempio mostra come ottenere il luogo attuale con Nearby Search (New) sostituendo l'utilizzo di PlacesClient.findCurrentPlace() con PlacesClient.searchNearby():

public class MainActivity 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, 100);
                List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);

                // Define a list of types to exclude. Adjust this list to suit each application.
                final List<String> excludedTypes = Arrays.asList("public_bathroom", "beach");

                SearchNearbyRequest request
                        = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields)
                                .setExcludedTypes(excludedTypes)
                                .setRankPreference(SearchNearbyRequest.RankPreference.DISTANCE)
                                .build();

                placesClient
                    .searchNearby(request)
                    .addOnSuccessListener(
                        response -> {
                            List<Place> places = response.getPlaces();
                            // do more on the results
                        })
                    .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);
    }

  }
}