O SDK do Places para iOS fornece informações valiosas ao seu app sobre os lugares, incluindo o nome e o endereço, o localização especificada como coordenadas de latitude/longitude, o tipo de lugar (como como boate, pet shop, museu) e muito mais. Para acessar essas informações local específico, use o ID de local, um identificador estável que identifica identifica um lugar.
Detalhes do lugar
O
GMSPlace
fornece informações sobre um local específico. É possível receber
GMSPlace
das seguintes maneiras:
- Chame
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
. Consulte o guia sobre acessar o lugar atual. - Ligação
GMSPlacesClient fetchPlaceFromPlaceID:
, transmitindo umGMSPlaceField
, um ID de local e um método de callback. Para solicitações de Place Details, se você não especifique pelo menos um campo com uma solicitação ou, se você omitir o campofields
, de uma solicitação, TODOS os campos possíveis serão retornados, e você será cobrado de acordo. Consulte o guia sobre como conseguir uma lugar por ID.
Ao solicitar um lugar, você precisa especificar quais tipos de dados devem ser incluídos
voltar. Para fazer isso, transmita um GMSPlaceField
, especificando os dados
tipos a serem retornados. Essa é uma consideração importante, pois afeta
custo de cada solicitação.
Como os resultados de dados de lugar não podem ficar vazios, só coloque
resultados com dados são retornados (por exemplo, se um lugar solicitado não tem
fotos, o campo photos
não estará presente no resultado).
O exemplo a seguir transmite uma lista de dois valores de campo para especificar os dados retornados por uma solicitação:
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
Saiba mais sobre os campos de local. Para mais informações sobre como as solicitações de dados de lugar são faturadas, consulte Uso e faturamento.
O
GMSPlace
pode conter os seguintes dados de local:
name
: o nome do lugar.editorialSummary
: fornece uma descrição simples de um lugar.placeID
: o identificador textual do local. Lida sobre IDs de lugar no restante desta página.coordinate
: a localização geográfica do lugar; com coordenadas de latitude e longitude.phoneNumber
– O número de telefone do lugar, em formato internacional.formattedAddress
: o endereço legível deste o local.Esse endereço costuma ser equivalente ao endereço postal. Alguns países, como o Reino Unido, não permitem a distribuição de endereços postais verdadeiros devido a restrições de licenciamento.
O endereço formatado é composto de maneira lógica por um ou mais componentes de endereço. Por exemplo, o endereço "Avenida Paulista, 111, São Paulo, SP" consiste nos seguintes componentes: "Avenida Paulista" (o trajeto), "111" (o número), "São Paulo" (a cidade) e "SP" (o estado brasileiro).
Não analise o endereço formatado de maneira programática. Em vez disso, use os componentes de endereço individuais, que a resposta da API inclui, além do campo de endereço formatado.
openingHours
: o horário de funcionamento do lugar (conforme representado porGMSOpeningHours
). LigaçãoGMSOpeningHours.weekdayText
para receber uma lista de strings localizadas. do horário de funcionamento diário da semana. Ligar paraGMSOpeningHours.Periods
para retornar uma lista deGMSPeriod
s com informações mais detalhadas que é equivalente aos dados fornecidos peloweekdayText
. Observação:se um lugar estiver sempre aberto, o período será representado como no domingo à meia-noite, e ocloseEvent
é nulo.currentOpeningHours
esecondaryOpeningHours
: campos que usam feriados e mudanças temporárias na programação de um lugar.addressComponents
: uma matriz de ObjetosGMSAddressComponent
que representam componentes do de um lugar. Esses componentes são fornecidos com a finalidade de extrair informações estruturadas sobre o endereço de um lugar; por exemplo; encontrar a cidade em que um lugar está localizado. Não usar esses componentes para formatação de endereços; como alternativa, use o métodoformattedAddress
, que fornece um endereço formatado localizado.Observe os seguintes fatos sobre
addressComponents
matriz:- A matriz de componentes de endereço pode conter mais componentes do que o
formattedAddress
: - A matriz não inclui necessariamente todas as entidades políticas que
conter um endereço, além daqueles incluídos no
formattedAddress
: - Não há garantia de que o formato da resposta permanecerá o mesmo entre
solicitações. Especificamente, o número de
addressComponents
varia de acordo com o endereço solicitado e pode mudar com o tempo para o mesmo endereço. Um componente pode mudar a posição na matriz. O tipo do componente pode mudar. Um componente específico pode ser em uma resposta posterior.
- A matriz de componentes de endereço pode conter mais componentes do que o
userRatingsTotal
: representa quantas avaliações compõem o total de avaliações. a classificação do lugar.
O
GMSPlace
contém as seguintes funções de membro:
-
isOpen
calcula se um lugar está aberto no horário determinado com base emopeningHours
eUTCOffsetMinutes
, e a data e hora atuais. isOpenAtDate
calcula se um lugar está aberto em uma determinada data, com base naopeningHours
eUTCOffsetMinutes
, e a data e hora atuais.
Ao usar essas funções para obter horários de funcionamento e/ou datas, o original
fetchPlaceFromPlaceID:
ou findPlaceLikelihoodsFromUserLocationWithPlaceFields:
solicitação deve especificar GMSPlaceFieldOpeningHours
e GMSPlaceFieldUTCOffsetMinutes
campos. Se um desses campos estiver ausente, o GMSPlace
resultante
não conterá horários ou datas de abertura, e a chamada retornará
GMSPlaceOpenStatusUnknown
. Para garantir resultados precisos, solicite
GMSPlaceFieldBusinessStatus
e GMSPlaceFieldUTCOffsetMinutes
na sua solicitação de lugar original. Se não for solicitado, presume-se que
a operação da empresa.
isOpen
com Place Details.
Tenha horários excepcionais
Embora o horário de funcionamento normal seja informado peloopeningHours
, o currentOpeningHours
e o secondaryOpeningHours
são compatíveis com mudanças temporárias e em feriados.
Os horários de funcionamento excepcionais para esses dias especiais podem ser filtrados e apresentados, se disponíveis.
Swift
func examineOpeningHours(place: GMSPlace) { // Check if the current opening hours contains a special day that has exceptional hours guard let currentOpeningHours = place.currentOpeningHours else { return } if let specialDays = currentOpeningHours.specialDays { guard !specialDays.isEmpty else { return } if let specialDay = specialDays.filter { $0.isExceptional }.first { // Indicate exceptional hours } } // Check if current opening hours contains a truncated time period let periods = currentOpeningHours.periods if !periods.isEmpty { for period in periods { let open = period.open let close = period.close if let open = open { let date = open.date if open.isTruncated { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available let secondaryOpeningHours = place.secondaryOpeningHours guard let hoursType = secondaryOpeningHours.first?.hoursType else { return } if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Objective-C
- (void)examineOpeningHours:(GMSPlace *) place { // Check if the current opening hours contains a special day that has exceptional hours GMSOpeningHours *currentOpeningHours = place.currentOpeningHours; if (currentOpeningHours != nil) { NSArray<GMSPlaceSpecialDay *> *specialDays = currentOpeningHours.specialDays; if ([specialDays count] != 0) { for (GMSPlaceSpecialDay *specialDay in specialDays) { NSDate *date = specialDay.date; if ([specialDay isExceptional]) { // Indicate exceptional hours } } } } // Check if current opening hours contains a truncated time period NSArray <GMSPeriod *> * periods = currentOpeningHours.periods; if ([periods count] != 0) { for (GMSPeriod * period in periods) { GMSTimeOfWeek *open = period.open; GMSTimeOfWeek *close = period.close; if (open) { if ([open isTruncated]) { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available GMSOpeningHours *secondaryOpeningHours = place.secondaryOpeningHours; GMSPlaceHoursType hoursType = secondaryOpeningHours.getHoursType; if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Obter local por ID
O ID de lugar é um indicador textual que identifica um local de forma exclusiva. Em
SDK do Places para iOS, você pode recuperar o ID de um local de um
GMSPlace
objeto. Você pode armazenar o ID de local e usá-lo para recuperar o
GMSPlace
novamente mais tarde.
Para encontrar um lugar por ID, chame
GMSPlacesClient
fetchPlaceFromPlaceID:
, transmitindo os seguintes parâmetros:
- Uma string que contém um ID de local.
- Um ou mais
GMSPlaceField
s, especificando os tipos de dados que serão retornados. - Um token de sessão se a chamada for feita para concluir uma consulta de preenchimento automático. Caso contrário, passe nulo.
- Um
GMSPlaceResultCallback
para gerenciar o resultado.
A API invoca o método de retorno de chamada especificado, transmitindo um
GMSPlace
objeto. Se o local não for encontrado, o objeto de local é nulo.
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { self.lblName?.text = place.name print("The selected place is: \(place.name)") } })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { NSLog(@"The selected place is: %@", [place name]); } }];
Exibir atribuições no seu aplicativo
Quando o app exibe informações recebidas de
GMSPlacesClient
lookUpPlaceID:callback:
, o app também precisará mostrar atribuições.
Consulte a documentação
atribuições.
Mais informações sobre IDs de local
O ID de lugar usado no SDK do Places para iOS é o mesmo identificador do usado no API Places, SDK do Places para Android e outras APIs do Google.
Cada ID de local pode se referir a apenas um local, mas um único local pode ter mais mais de um ID de lugar.
Algumas circunstâncias podem fazer com que um local receba um novo ID de local. Por exemplo, isso pode acontecer se uma empresa se mudar para outra localidade.
Ao solicitar um local especificando um ID de local, você pode ter a certeza de que você sempre receberá o mesmo lugar na resposta (se o lugar ainda existe). Observe, no entanto, que a resposta pode conter um ID de local que é diferente daquele em sua solicitação.
Para mais informações, consulte a visão geral do ID de lugar.