El SDK de Places para iOS (nuevo) le brinda a tu app información valiosa información sobre lugares, como el nombre y la dirección, la ubicación ubicación especificada como coordenadas de latitud y longitud, el tipo de lugar (como como un club nocturno, una tienda de mascotas, un museo), entre otros. Para acceder a esta información de una puedes usar el id. de sitio, un identificador estable que identifica de forma exclusiva identifica un lugar.
Cómo obtener detalles de un lugar
El
GMSPlace
contiene información sobre un lugar específico, incluidos todos los campos de datos que se muestran en
Campos de datos de lugar (nuevo). Obtén un
GMSPlace
llamando a
GMSPlacesClient
fetchPlaceWithRequest:
,
pasando un objeto GMSFetchPlaceRequest
y un
método de devolución de llamada de tipo
GMSPlaceResultCallback
.
El objeto GMSFetchPlaceRequest
especifica lo siguiente:
- (Obligatorio) El ID de lugar, un identificador único para un lugar en la etiqueta de Google Places. y en Google Maps.
- La lista de campos que se debe mostrar en el objeto
GMSPlace
, también llamado máscara de campo, como lo defineGMSPlaceProperty
Si no especificas al menos un campo en la lista de campos la lista de campos, entonces la llamada devuelve un error. - El código de región que se usa para dar formato a la respuesta (opcional).
- El token de sesión que se usa para finalizar una sesión de Autocomplete (nuevo) (opcional).
Cómo realizar una solicitud de Place Details
En este ejemplo, se obtiene un sitio por ID y se pasan los siguientes parámetros:
- Es el ID de lugar de
ChIJV4k8_9UodTERU5KXbkYpSYs
. - Una lista de campos que especifica que se debe mostrar el nombre del lugar y la URL del sitio web.
- Un objeto
GMSPlaceResultCallback
para manejar el resultado.
La API invoca el método de devolución de llamada especificado y pasa un
GMSPlace
. Si no se encuentra el sitio, el objeto de sitio es nil.
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue} // Create the GMSFetchPlaceRequest object. let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil) client.fetchPlace(with: fetchPlaceRequest, callback: { (place: GMSPlace?, error: Error?) in guard let place, error == nil else { return } print("Place found: \(String(describing: place.name))") })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. NSArray<NSString *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite]; // Create the GMSFetchPlaceRequest object. GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties sessionToken:nil]; [placesClient fetchPlaceWithRequest: fetchPlaceRequest callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { NSLog(@"Place Found: %@", place.name); NSLog(@"The place URL: %@", place.website); } }];
SDK de Places Swift para iOS (versión preliminar)
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.name, .website] ) switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): // Handle place case .failure(let placesError): // Handle error }
Respuesta de Place Details
La solicitud de Place Details muestra un
Un objeto GMSPlace
que contiene detalles sobre el lugar Solo los campos especificados en la lista de campos se propagan en el objeto GMSPlace
.
Obtener estado de apertura
El objeto GMSPlacesClient
contiene una función de miembro llamada isOpenWithRequest
(isOpenRequest
en Swift y isPlaceOpenRequest
en GooglePlacesSwift) que muestra una respuesta que indica si el lugar está abierto en ese momento, según el horario especificado en la llamada.
Este método toma un solo argumento de tipo GMSPlaceIsOpenWithRequest
que contiene lo siguiente:
- Un objeto
GMSPlace
o una cadena que especifica un ID de lugar Para obtener más información sobre cómo crear el objeto Place con los campos necesarios, consulta Detalles del lugar.
- Un objeto
NSDate
(Obj-C) oDate
(Swift) opcional que especifique la hora que deseas verificar. Si no se especifica la hora, el valor predeterminado será ahora. - Un método
GMSPlaceOpenStatusResponseCallback
para controlar la respuesta >
El método GMSPlaceIsOpenWithRequest
requiere que se configuren los siguientes campos en el objeto GMSPlace
:
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
Si estos campos no se proporcionan en el objeto Place o si pasas un ID de lugar, el método usa GMSPlacesClient GMSFetchPlaceRequest:
para recuperarlos.
isOpenWithRequest
respuesta
isOpenWithRequest
muestra un objeto GMSPlaceIsOpenResponse
que contiene un valor booleano llamado status
que indica si la empresa está abierta, cerrada o si el estado es desconocido.
Idioma | Valor si está abierto | Valor si el sitio está cerrado | Valor si el estado es desconocido |
---|---|---|---|
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (versión preliminar) | true |
false |
nil |
Facturación para isOpenWithRequest
- Los campos
GMSPlacePropertyUTCOffsetMinutes
yGMSPlacePropertyBusinessStatus
se cobran según el SKU de Basic Data. El resto del horario de atención se cobra en el SKU de Place Details (Advanced). - Si tu objeto
GMSPlace
ya tiene estos campos de una solicitud anterior, no se te volverá a cobrar.
Ejemplo: Realiza una solicitud GMSPlaceIsOpenWithRequest
En el siguiente ejemplo, se muestra cómo inicializar un elemento GMSPlaceIsOpenWithRequest
dentro de un objeto GMSPlace
existente.
Swift
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 } }];
GooglePlacesSwift
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 }
Parámetros obligatorios
Usa el objeto GMSFetchPlaceRequest
para especificar los parámetros obligatorios.
ID de lugar
El ID de lugar que se usa en el SDK de Places para iOS es el mismo identificador que se usa en la API de Places, SDK de Places para Android y otras APIs de Google. Cada id. de sitio puede hacer referencia a un solo sitio, pero un solo sitio puede tener más. de un ID de lugar.
Existen circunstancias que pueden hacer que un sitio obtenga un nuevo ID de lugar. Esto, por ejemplo, puede suceder si un negocio se muda a otro lugar.
Cuando solicitas un sitio mediante la especificación de un ID de lugar, puedes estar seguro de que siempre recibirás el mismo lugar en la respuesta (si el lugar aún existe). Sin embargo, ten en cuenta que la respuesta puede contener un ID de lugar que diferente de la que aparece en tu solicitud.
Lista de campos
Cuando solicitas detalles del lugar, debes especificar los datos para
Se devuelve en el objeto GMSPlace
del lugar como una máscara de campo. Para definir la máscara de campo
pasar un array de valores de
GMSPlaceProperty
al objeto GMSFetchPlaceRequest
.
El enmascaramiento de campo es una buena
práctica de diseño para no solicitar datos innecesarios,
ayuda a evitar tiempos de procesamiento y cargos de facturación innecesarios.
Especifica uno o más de los siguientes campos:
Los siguientes campos activan el SKU de Place Details (solo ID):
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
,GMSPlacePropertyPhotos
Los siguientes campos activan el SKU de Place Details (solo ubicación):
GMSPlacePropertyAddressComponents
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyViewport
Los siguientes campos activan el SKU de Place Details (Basic):
GMSPlacePropertyBusinessStatus
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyWheelchairAccessibleEntrance
Los siguientes campos activan el SKU de Place Details (Advanced):
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Los siguientes campos activan el SKU de Place Details (Preferred):
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
En el siguiente ejemplo, se pasa una lista de dos
valores de campo
para especificar que el objeto GMSPlace
que muestra una solicitud contiene el
Campos name
y placeID
:
Swift
// 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];
SDK de Places Swift para iOS (versión preliminar)
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
Parámetros opcionales
Usa el objeto GMSFetchPlaceRequest
para especificar los parámetros opcionales.
regionCode
El código de región que se usa para dar formato a la respuesta, especificado como una valor de código CLDR de dos caracteres. Este parámetro también puede tener un efecto de sesgo en los resultados de la búsqueda. No hay un valor predeterminado.
Si el nombre del país del campo de dirección en la respuesta coincide con el el código de región, el código de país se omite de la dirección.
La mayoría de los códigos CLDR son idénticos a los códigos ISO 3166-1, con algunas excepciones notables. Por ejemplo, el ccTLD del Reino Unido es “uk” (.co.uk), mientras que el código ISO 3166-1 es "gb" (técnicamente para el del "Reino Unido de Gran Bretaña e Irlanda del Norte"). El parámetro puede afectar los resultados según la ley aplicable.
sessionToken
Los tokens de sesión son cadenas generadas por el usuario que hacen un seguimiento de Autocomplete Llamadas (nuevas) como "sesiones". Autocomplete (nuevo) usa tokens de sesión para Agrupar las fases de consulta y selección de lugares de una búsqueda de autocompletado del usuario en una sesión discreta para la facturación. Los tokens de sesión se pasan a Place Details (nuevo) de llamadas que siguen a las de Autocomplete (nuevo). Para obtener más información, consulta Tokens de sesión.
Mostrar atribuciones en tu aplicación
Cuándo muestra la app información obtenida de
GMSPlacesClient
:
como fotos y opiniones, la app también debe mostrar las atribuciones requeridas.
Por ejemplo, la propiedad reviews
del objeto GMSPlacesClient
contiene un array de hasta cinco
GMSPlaceReview
objetos. Cada objeto GMSPlaceReview
puede contener atribuciones y atribuciones de autor.
Si muestra la opinión en su aplicación, también debe mostrar cualquier atribución o autor
atribución.
Para obtener más información, consulta la documentación sobre atribuciones.