Von Current Place (Legacy) zu Nearby Search (New) migrieren

Entwickler im Europäischen Wirtschaftsraum (EWR)

Das Places SDK for Android (Legacy) unterstützt Current Place (Legacy). Wenn Sie mit „Current Place (Legacy)“ vertraut sind, werden mit Nearby Search (New) die folgenden Änderungen vorgenommen:

  • Es wird ein neues Preismodell verwendet. Preisinformationen für alle APIs finden Sie unter Places SDK for Android (New).

  • Sie müssen Ihre App initialisieren, indem Sie die Methode Places.initializeWithNewPlacesApiEnabled() aufrufen. Weitere Informationen zum Auswählen des Places API-Dienstes finden Sie unter Google Cloud-Projekt einrichten.

  • Die Maskierung von Feldern ist erforderlich. Sie müssen angeben, welche Felder in der Antwort zurückgegeben werden sollen. Es gibt keine Standardliste der zurückgegebenen Felder. Wenn Sie diese Liste weglassen, geben die Methoden einen Fehler zurück.

  • Nearby Search (New) unterstützt PlaceLikelihood nicht. Mit Nearby Search (New) können Sie die wahrscheinlichste Position anhand der Reihenfolge der Ergebnisse ermitteln.

Beispiele für Nearby Search (New)

Weitere Informationen und Beispiele zur Verwendung von „Nearby Search (New)“ finden Sie in der Dokumentation zu „Nearby Search (New)“.

Aktuellen Ort mit Nearby Search (New) abrufen

Das folgende Beispiel zeigt, wie Sie den aktuellen Ort mit der neuen Nearby Search-Funktion abrufen, indem Sie PlacesClient.findCurrentPlace() durch PlacesClient.searchNearby() ersetzen:

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);
    }

  }
}