Запрос Nearby Search (New) принимает в качестве входных данных регион для поиска, указанный как круг, определяемый координатами широты и долготы центральной точки круга и радиусом в метрах. Запрос возвращает список соответствующих мест, каждое из которых представлено объектом GMSPlace
, в пределах указанной области поиска.
По умолчанию ответ содержит места всех типов в области поиска. Вы можете дополнительно отфильтровать ответ, указав список типов мест, которые следует явно включить или исключить из ответа. Например, вы можете указать, что нужно включить в ответ только те места, которые относятся к типу «ресторан», «пекарня» и «кафе», или исключить все места типа «школа».
Запросы на поиск поблизости (новые)
Сделайте запрос на поиск поблизости, вызвав GMSPlacesClient searchNearbyWithRequest:
, передав объект GMSPlaceSearchNearbyRequest
, который определяет параметры запроса, и метод обратного вызова типа GMSPlaceSearchNearbyResultCallback
для обработки ответа.
Объект GMSPlaceSearchNearbyRequest
определяет все обязательные и необязательные параметры для запроса. Обязательные параметры включают:
- Список полей для возврата в объекте
GMSPlace
, также называемый маской поля , как определеноGMSPlaceProperty
. Если вы не укажете хотя бы одно поле в списке полей или пропустите список полей, то вызов вернет ошибку. - Ограничение местоположения , то есть круг, определяющий область поиска.
В этом примере запроса на поиск поблизости указано, что объекты ответа GMSPlace
содержат название места ( GMSPlacePropertyName
) и координаты места ( GMSPlacePropertyCoordinate
) для каждого объекта GMSPlace
в результатах поиска. Он также фильтрует ответ, чтобы возвращать только места типа «ресторан» и «кафе».
Место Swift SDK
let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500) let searchNearbyRequest = SearchNearbyRequest( locationRestriction: restriction, placeProperties: [ .name, .coordinate], includedTypes: [ .restaurant, .cafe ], ) switch await placesClient.searchNearby(with: searchNearbyRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Быстрый
// Array to hold the places in the response var placeResults: [GMSPlace] = [] // Define the search area as a 500 meter diameter circle in San Francisco, CA. let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500) // Specify the fields to return in the GMSPlace object for each place in the response. let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue} // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties) let includedTypes = ["restaurant", "cafe"] request.includedTypes = includedTypes let callback: GMSPlaceSearchNearbyResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } placeResults = results } GMSPlacesClient.shared().searchNearby(with: request, callback: callback)
Objective-C
// Array to hold the places in the response _placeResults = [NSArray array]; // Define the search area as a 500 meter diameter circle in San Francisco, CA. id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500); // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc] initWithLocationRestriction:circularLocation placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]]; // Set the place types to filter on. NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ]; request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes]; [_placesClient searchNearbyWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { // Get list of places. _placeResults = places; } } ];
Ответы на поиск поблизости
API поиска поблизости возвращает массив совпадений в виде объектовGMSPlace
, по одному объекту GMSPlace
на каждое совпадающее место.Получить открытый статус
Объект GMSPlacesClient
содержит функцию-член isOpenWithRequest
( isOpenRequest
в Swift и isPlaceOpenRequest
в GooglePlacesSwift), которая возвращает ответ, указывающий, открыто ли место в данный момент, на основе времени, указанного в вызове.
Этот метод принимает один аргумент типа GMSPlaceIsOpenWithRequest
, который содержит:
- Объект
GMSPlace
или строка, указывающая идентификатор места. Для получения дополнительной информации о создании объекта Place с необходимыми полями см. раздел Подробности места . - Необязательный объект
NSDate
(Obj-C) илиDate
(Swift), указывающий время, которое вы хотите проверить. Если время не указано, по умолчанию используется now. - Метод
GMSPlaceOpenStatusResponseCallback
для обработки ответа. >
Метод GMSPlaceIsOpenWithRequest
требует установки следующих полей в объекте GMSPlace
:
-
GMSPlacePropertyUTCOffsetMinutes
-
GMSPlacePropertyBusinessStatus
-
GMSPlacePropertyOpeningHours
-
GMSPlacePropertyCurrentOpeningHours
-
GMSPlacePropertySecondaryOpeningHours
Если эти поля не указаны в объекте Place или если вы передаете идентификатор места, метод использует GMSPlacesClient GMSFetchPlaceRequest:
для их извлечения.
ответ isOpenWithRequest
isOpenWithRequest
возвращает объект GMSPlaceIsOpenResponse
, содержащий логическое значение с именем status
, которое указывает, открыта ли компания, закрыта или статус неизвестен.
Язык | Значение, если открыто | Значение, если закрыто | Значение, если статус неизвестен |
---|---|---|---|
Места Свифт | true | false | nil |
Быстрый | .open | .closed | .unknown |
Objective-C | GMSPlaceOpenStatusOpen | GMSPlaceOpenStatusClosed | GMSPlaceOpenStatusUnknown |
Выставление счетов за isOpenWithRequest
- Поля
GMSPlacePropertyUTCOffsetMinutes
иGMSPlacePropertyBusinessStatus
тарифицируются по базовому артикулу данных . Остальные часы работы тарифицируются по корпоративному артикулу сведений о месте. - Если ваш объект
GMSPlace
уже содержит эти поля из предыдущего запроса, с вас не будет взиматься дополнительная плата.
Пример: сделайте запрос GMSPlaceIsOpenWithRequest
В следующем примере показано, как инициализировать GMSPlaceIsOpenWithRequest
в существующем объекте GMSPlace
. Место Swift SDK
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
Быстрый
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
Objective-C
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
Требуемые параметры
Используйте объект GMSPlaceSearchNearbyRequest
, чтобы указать необходимые параметры поиска.
Список полей
При запросе сведений о месте необходимо указать возвращаемые данные в объекте
GMSPlace
для этого места в качестве маски поля. Чтобы определить маску поля, передайте массив значений изGMSPlaceProperty
в объектGMSPlaceSearchNearbyRequest
. Маскировка полей — это хорошая практика проектирования, которая гарантирует, что вы не запрашиваете ненужные данные, что помогает избежать ненужного времени обработки и расходов на выставление счетов.Укажите одно или несколько из следующих полей:
Следующие поля активируют Nearby Search Pro SKU :
GMSPlacePropertyAddressComponents
GMSPlacePropertyBusinessStatus
GMSPlacePropertyCoordinate
GMSPlacePropertyFormattedAddress
GMSPlacePropertyName
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyPhotos
GMSPlacePropertyPlaceID
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyViewport
GMSPlacePropertyWheelchairAccessibleEntrance
Следующие поля активируют Nearby Search Enterprise SKU :
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
Следующие поля активируют Nearby Search Enterprise Plus SKU :
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
В следующем примере передается список из двух значений полей , чтобы указать, что объект
GMSPlace
, возвращаемый запросом, содержит поляname
иplaceID
:Место Swift SDK
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
Быстрый
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
Objective-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
местоположениеОграничение
Объект
GMSPlaceLocationRestriction
, определяющий область поиска, заданную как круг, определяемый центральной точкой и радиусом в метрах. Радиус должен быть между 0,0 и 50000,0 включительно. Радиус по умолчанию равен 0,0. Вы должны установить его в своем запросе на значение больше 0,0.
Необязательные параметры
Используйте объект GMSPlaceSearchNearbyRequest
, чтобы указать необязательные параметры поиска.
включенныеТипы/исключенныеТипы, включенныеПервичныеТипы/исключенныеПервичныеТипы
Позволяет указать список типов из таблицы типов A, используемых для фильтрации результатов поиска. В каждой категории ограничений типов можно указать до 50 типов.
Место может иметь только один основной тип из типов, связанных с ним в Таблице A. Например, основным типом может быть
"mexican_restaurant"
или"steak_house"
. ИспользуйтеincludedPrimaryTypes
иexcludedPrimaryTypes
для фильтрации результатов по основному типу места.Место также может иметь несколько значений типа из типов таблицы A , связанных с ним. Например, ресторан может иметь следующие типы:
"seafood_restaurant"
,"restaurant"
,"food"
,"point_of_interest"
,"establishment"
. ИспользуйтеincludedTypes
иexcludedTypes
для фильтрации результатов по списку типов, связанных с местом.Когда вы указываете общий первичный тип, такой как
"restaurant"
или"hotel"
, ответ может содержать места с более конкретным первичным типом, чем указанный. Например, вы указываете включить первичный тип"restaurant"
. Затем ответ может содержать места с первичным типом"restaurant"
, но ответ также может содержать места с более конкретным первичным типом, таким как"chinese_restaurant"
или"seafood_restaurant"
.Если поиск указан с несколькими ограничениями типа, возвращаются только места, которые удовлетворяют всем ограничениям. Например, если указать
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}
, возвращаемые места предоставляют услуги, связанные с"restaurant"
, но не работают в первую очередь как"steak_house"
.включеныТипы
Список типов мест из Таблицы A для поиска. Если этот параметр пропущен, возвращаются места всех типов.
исключенныеТипы
Список типов мест из таблицы А для исключения из поиска.
Если вы укажете в запросе как
includedTypes
(например,"school"
), так иexcludedTypes
(например,"primary_school"
), то ответ будет включать места, которые относятся к категории"school"
, но не"primary_school"
. Ответ будет включать места, которые соответствуют хотя бы одному изincludedTypes
и ни одному изexcludedTypes
.Если имеются конфликтующие типы, например, тип присутствует как в
includedTypes
, так иexcludedTypes
, возвращается ошибкаINVALID_REQUEST
.включеныОсновные типы
Список основных типов мест из Таблицы А для включения в поиск.
исключенныеОсновныеТипы
Список основных типов мест из таблицы А для исключения из поиска.
Если имеются конфликтующие первичные типы, например, тип присутствует как в
includedPrimaryTypes
, так иexcludedPrimaryTypes
, возвращается ошибкаINVALID_ARGUMENT
.maxResultCount
Указывает максимальное количество возвращаемых результатов мест. Должно быть от 1 до 20 (по умолчанию) включительно.
rankPreference
Тип используемого ранжирования. Если этот параметр пропущен, результаты ранжируются по популярности. Может быть одним из следующих:
-
.popularity
(по умолчанию) Сортирует результаты по популярности. -
.distance
Сортирует результаты в порядке возрастания расстояния от указанного местоположения.
-
Код региона
Код региона, используемый для форматирования ответа, указанный как двухсимвольное значение кода CLDR . Значения по умолчанию нет.
Если название страны поля
formattedAddress
в ответе совпадает сregionCode
, код страны исключается изformattedAddress
. Этот параметр не влияет наadrFormatAddress
, который всегда включает название страны, или наshortFormattedAddress
, который никогда его не включает.Большинство кодов CLDR идентичны кодам ISO 3166-1, за некоторыми заметными исключениями. Например, ccTLD Соединенного Королевства — «uk» (.co.uk), а его код ISO 3166-1 — «gb» (технически для субъекта «Соединенное Королевство Великобритании и Северной Ирландии»). Параметр может влиять на результаты в зависимости от применимого законодательства.
Отображение атрибуции в вашем приложении
Когда ваше приложение отображает информацию, полученную от GMSPlacesClient
, например фотографии и отзывы, приложение также должно отображать требуемые атрибуции.
Например, свойство reviews
объекта GMSPlacesClient
содержит массив из пяти объектов GMSPlaceReview
. Каждый объект GMSPlaceReview
может содержать атрибуции и авторские атрибуции. Если вы отображаете обзор в своем приложении, то вы также должны отображать любую атрибуцию или авторскую атрибуцию.
Более подробную информацию см. в документации по атрибуции .