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