Используя Places SDK для iOS, вы можете узнать, где в данный момент находится устройство. То есть место в текущем местоположении устройства. Примеры мест включают местные предприятия, достопримечательности и географические местоположения.
- Запрос авторизации местоположения
- Ограничения использования
- Получить текущее местоположение
- Отображение атрибутов в вашем приложении
Запрос авторизации местоположения
Если ваше приложение использует GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
, ваше приложение должно запрашивать разрешение на использование служб определения местоположения. Добавьте ключ NSLocationWhenInUseUsageDescription
в файл Info.plist
, чтобы определить строку, информирующую пользователя о том, зачем вам нужны службы определения местоположения. Например:
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
Если вы хотите вызвать findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
когда приложение находится в фоновом режиме, не вызывая диалоговое окно подтверждения, выполните следующие действия перед выполнением вызова:
- Добавьте ключ
NSLocationAlwaysUsageDescription
в файлInfo.plist
. - Вызовите
requestAlwaysAuthorization
для любого экземпляраCLLocationManager
перед вызовом метода.
Запросите авторизацию у CLLocationManager
следующим образом:
Быстрый
locationManager.requestAlwaysAuthorization()
Цель-C
[self.locationManager requestAlwaysAuthorization];
Получение текущего местоположения
Чтобы найти местную компанию или другое место, где в данный момент находится устройство, вызовите GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
. Включите следующие параметры:
- Один или несколько
GMSPlaceField
s, указывающих, какие типы данных возвращать. Если вы опустите этот параметр, будут возвращены ВСЕ возможные поля, и вам будет выставлен соответствующий счет. Это относится только к запросам сведений о месте. - Метод обратного вызова для обработки результатов.
Поля соответствуют результатам поиска мест и разделены на три категории оплаты: «Основной», «Контакт» и «Атмосфера». Плата за основные поля взимается по базовому тарифу и не требует дополнительной оплаты. Поля «Контакт» и «Атмосфера» оплачиваются по более высокой ставке. Дополнительную информацию о том, как оплачиваются запросы данных Place, см. в разделе Использование и выставление счетов .
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%-ю вероятность того, что правильным местом является место А, и 35%-ю вероятность того, что это место Б, массив правдоподобия состоит из двух элементов: места А с вероятностью 0,55 и места Б с вероятностью 0,35.
Отображение атрибутов в вашем приложении
Когда ваше приложение отображает информацию, полученную от GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
, приложение также должно отображать атрибуции. Подробнее об атрибуциях .