Миграция из текущего места (устаревшая версия) в поиск поблизости (новая версия)

Разработчики из Европейской экономической зоны (ЕЭЗ)

В Places SDK для Android (устаревшая версия) поддерживается функция «Текущее место» (устаревшая версия) . Если вы знакомы с функцией «Текущее место» (устаревшая версия), то в функции «Поиск поблизости» (новая версия) внесены следующие изменения:

  • Используется новая модель ценообразования. Информацию о ценах на все API см. в разделе Places SDK для Android (новая версия) .

  • Для инициализации приложения необходимо вызвать метод Places.initializeWithNewPlacesApiEnabled() . Дополнительную информацию о выборе службы Places API см. в разделе «Настройка проекта Google Cloud» .

  • Необходимо указать, какие поля вы хотите получить в ответе. Список возвращаемых полей по умолчанию отсутствует. Если вы его не укажете, методы вернут ошибку.

  • Функция «Поиск поблизости» (новая функция) не поддерживает PlaceLikelihood . В функции «Поиск поблизости» (новая функция) вы можете использовать порядок результатов для определения наиболее вероятного местоположения.

Примеры поиска поблизости (новые)

Для получения дополнительной информации, а также примеров использования функции «Поиск поблизости (новый)», см. документацию по функции «Поиск поблизости (новый)» .

Воспользуйтесь функцией «Поиск поблизости» (новая функция), чтобы узнать текущее местоположение.

Следующий пример демонстрирует, как получить текущее местоположение с помощью функции «Поиск поблизости» (новая функция), заменив использование PlacesClient.findCurrentPlace() на 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);
    }

  }
}