El SDK de Places para iOS (nuevo) le proporciona a tu app mucha información sobre lugares, incluidos el nombre y la dirección del lugar, la ubicación geográfica especificada como coordenadas de latitud y longitud, el tipo de lugar (como un club nocturno, una tienda de mascotas, un museo) y mucho más. Para acceder a esta información de un lugar específico, puedes usar el ID de lugar, un identificador estable que identifica un lugar de manera exclusiva.
Cómo obtener detalles de un lugar
La clase 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). Para obtener un objeto GMSPlace
, llama a GMSPlacesClient
fetchPlaceWithRequest:
y pasa un objeto GMSFetchPlaceRequest
y un método de devolución de llamada de tipo GMSPlaceResultCallback
.
El objeto GMSFetchPlaceRequest
especifica lo siguiente:
- El ID de lugar, un identificador único de un lugar en la base de datos de Google Places y en Google Maps (obligatorio).
- La lista de campos que se deben mostrar en el objeto
GMSPlace
, también llamada máscara de campo, según se define enGMSPlaceProperty
(obligatorio). Si no especificas al menos un campo de la lista o si omites la lista de campos, la llamada mostrará 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 pasan los siguientes parámetros para obtener un lugar por ID:
- Es el ID de lugar de
ChIJV4k8_9UodTERU5KXbkYpSYs
. - Una lista de campos que especifica que se devolverá el nombre del lugar y la URL del sitio web.
- Un objeto
GMSPlaceResultCallback
para controlar el resultado
La API invoca el método de devolución de llamada especificado y pasa un objeto 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); } }];
GooglePlacesSwift
// 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
Place Details muestra un objeto GMSPlace
que contiene detalles sobre el lugar. En el objeto GMSPlace
, solo se propagan los campos especificados en la lista de campos.
Junto con los campos de datos, el objeto GMSPlace
en la respuesta contiene las siguientes funciones de miembro:
-
isOpen
calcula si un lugar está abierto en un momento determinado. isOpenAtDate
calcula si un lugar está abierto en una fecha determinada.
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 que se usa en la API de Places, el SDK de Places para Android y otras APIs de Google. Cada ID de lugar puede hacer referencia a un solo lugar, pero un lugar puede tener más de un ID.
Existen circunstancias que pueden hacer que un sitio obtenga un nuevo ID. Esto, por ejemplo, puede suceder si un negocio se muda a otro lugar.
Cuando especificas un ID de lugar para solicitar un 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 diferente del que aparece en tu solicitud.
Lista de campos
Cuando solicitas Place Details, debes especificar los datos que se mostrarán en el objeto GMSPlace
del lugar como una máscara de campo. Para definir la máscara de campo, pasa un array de valores de GMSPlaceProperty
al objeto GMSFetchPlaceRequest
.
El enmascaramiento de campo es una práctica de diseño recomendada para garantizar que no solicites datos innecesarios, lo que 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
yGMSPlacePropertyWebsite
Los siguientes campos activan el SKU de Place Details (Preferred):
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
yGMSPlacePropertyTakeout
En el siguiente ejemplo, se pasa una lista de dos valores de campo para especificar que el objeto GMSPlace
que muestra una solicitud contiene los 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];
GooglePlacesSwift
// 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 regional que se usa para dar formato a la respuesta, especificado como un 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 código de región, este 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 su código ISO 3166-1 es "gb" (técnicamente para la entidad 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 las llamadas de Autocomplete (nuevo) como "sesiones". La función Autocomplete (nuevo) usa tokens de sesión para agrupar las fases de consulta y selección de lugares de la búsqueda de autocompletado de un usuario en una sesión discreta con fines de facturación. Los tokens de sesión se pasan a llamadas de Place Details (nuevo) que siguen a las llamadas de Autocomplete (nuevo). Para obtener más información, consulta Tokens de sesión.
Mostrar atribuciones en tu aplicación
Cuando tu app muestra información obtenida de GMSPlacesClient
, como fotos y opiniones, también debe mostrar las atribuciones requeridas.
Por ejemplo, la propiedad reviews
del objeto GMSPlacesClient
contiene un array de hasta cinco objetos GMSPlaceReview
. Cada objeto GMSPlaceReview
puede contener atribuciones y atribuciones del autor.
Si muestras la opinión en tu app, también debes mostrar cualquier atribución o atribución del autor.
Para obtener más información, consulta la documentación sobre las atribuciones.