Migracja z Current Place (starsza wersja) do Nearby Search (nowa wersja)

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

Pakiet SDK Miejsc na Androida (starszy) obsługuje bieżące miejsce (starsze). Jeśli znasz usługę Bieżące miejsce (starsza wersja), wyszukiwanie w pobliżu (nowa wersja) wprowadza te zmiany:

  • Korzysta z nowego modelu cenowego. Informacje o cenach wszystkich interfejsów API znajdziesz w artykule Pakiet SDK Miejsc na Androida (nowy).

  • Musisz zainicjować aplikację, wywołując metodę Places.initializeWithNewPlacesApiEnabled(). Więcej informacji o wybieraniu usługi Places API znajdziesz w artykule Konfigurowanie projektu Google Cloud.

  • Maskowanie pola jest wymagane. Musisz określić, które pola mają być zwracane w odpowiedzi. Nie ma domyślnej listy zwracanych pól. Jeśli pominiesz tę listę, metody zwrócą błąd.

  • Interfejs Nearby Search (nowy) nie obsługuje PlaceLikelihood. W przypadku wyszukiwania w pobliżu (nowego) możesz użyć kolejności wyników, aby określić najbardziej prawdopodobną lokalizację.

Przykłady wyszukiwania w pobliżu (nowa wersja)

Więcej informacji oraz przykłady użycia interfejsu Nearby Search (New) znajdziesz w dokumentacji Nearby Search (New).

Używanie wyszukiwania w pobliżu (nowa wersja) do uzyskiwania informacji o bieżącym miejscu

Poniższy przykład pokazuje, jak uzyskać bieżące miejsce za pomocą wyszukiwania w pobliżu (nowego) przez zastąpienie PlacesClient.findCurrentPlace() elementem 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);
    }

  }
}