Текущее место

Выберите платформу: Android iOS .

Используя Places SDK для iOS, вы можете определить место, где в данный момент находится устройство. То есть место в текущем местоположении устройства. Примеры мест включают местные предприятия, достопримечательности и географические местоположения.

  1. Запросить авторизацию местоположения
  2. Ограничения использования
  3. Получить текущее местоположение
  4. Отображение авторства в вашем приложении

Запрос авторизации местоположения

Если ваше приложение использует GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: , ваше приложение должно запросить разрешение на использование служб определения местоположения. Добавьте ключ NSLocationWhenInUseUsageDescription в файл Info.plist , чтобы определить строку, информирующую пользователя, почему вам нужны службы определения местоположения. Например:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Show your location on the map</string>

Если вы хотите вызвать findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: когда приложение находится в фоновом режиме, без запуска диалогового окна подтверждения, перед выполнением вызова выполните следующие шаги:

  1. Добавьте ключ NSLocationAlwaysUsageDescription в файл Info.plist .
  2. Вызовите requestAlwaysAuthorization в любом экземпляре CLLocationManager перед вызовом метода.

Запросите авторизацию у CLLocationManager следующим образом:

Быстрый

    locationManager.requestAlwaysAuthorization()
    

Цель-C

    [self.locationManager requestAlwaysAuthorization];
    

Получение текущего местоположения

Чтобы найти местный бизнес или другое место, где в данный момент находится устройство, вызовите GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: . Включите следующие параметры:

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

Поля соответствуют результатам поиска мест и разделены на три платежные категории: «Базовый», «Контакт» и «Атмосфера». Базовые поля оплачиваются по базовой ставке и не требуют дополнительных затрат. Поля «Контакт» и «Атмосфера» оплачиваются по более высокой ставке. Дополнительную информацию о том, как оплачиваются запросы данных о местах, см. в разделе «Использование и выставление счетов» .

API вызывает указанный метод обратного вызова, возвращая массив объектов GMSPlaceLikelihood .

Каждый объект GMSPlaceLikelihood представляет место. Для каждого места результат включает указание вероятности того, что это место является правильным. Более высокое значение означает большую вероятность того, что это место подойдет лучше всего. Буфер может быть пустым, если не известно место, соответствующее местоположению устройства.

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

Быстрый

// Specify the place data types to return.
let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
                                          UInt(GMSPlaceField.placeID.rawValue))!
placesClient?.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: fields, callback: {
  (placeLikelihoodList: Array<GMSPlaceLikelihood>?, error: Error?) in
  if let error = error {
    print("An error occurred: \(error.localizedDescription)")
    return
  }

  if let placeLikelihoodList = placeLikelihoodList {
    for likelihood in placeLikelihoodList {
      let place = likelihood.place
      print("Current Place name \(String(describing: place.name)) at likelihood \(likelihood.likelihood)")
      print("Current PlaceID \(String(describing: place.placeID))")
    }
  }
})

Цель-C

// Specify the place data types to return.
GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
[_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:fields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"An error occurred %@", [error localizedDescription]);
    return;
  }
  if (likelihoods != nil) {
    for (GMSPlaceLikelihood *likelihood in likelihoods) {
      GMSPlace *place = likelihood.place;
      NSLog(@"Current place name: %@", place.name);
      NSLog(@"Place ID: %@", place.placeID);
    }
  }
}];

Примечания о значениях правдоподобия:

  • Вероятность обеспечивает относительную вероятность того, что место будет наилучшим образом соответствовать списку возвращенных мест для одного запроса. Вы не можете сравнивать вероятности разных запросов.
  • Значение вероятности будет находиться в диапазоне от 0 до 1,0.
  • Сумма вероятностей в возвращаемом массиве объектов GMSPlaceLikelihood всегда меньше или равна 1,0. Обратите внимание, что сумма не обязательно равна 1,0.

Например, чтобы представить 55%-ную вероятность того, что правильным местом является место A, и 35%-ную вероятность того, что это место B, массив правдоподобия имеет два элемента: место A с вероятностью 0,55 и место B с вероятностью 0,35.

Отображение атрибуции в вашем приложении

Когда ваше приложение отображает информацию, полученную из GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: , приложение также должно отображать атрибуцию. Подробнее об атрибуции читайте .