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

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

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

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

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

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

  • Функция Nearby Search (новая) не поддерживает PlaceLikelihood . С помощью Nearby Search (новая) вы можете определить наиболее вероятное местоположение, используя порядок результатов.

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

Дополнительную информацию, а также примеры использования функции Nearby Search (New) см. в документации по функции Nearby Search (New) .

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

В следующем примере показано, как получить текущее место с помощью Nearby Search (New), заменив использование PlacesClient.findCurrentPlace() на 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);
    }

  }
}