Place Details

Seleziona la piattaforma: Android iOS JavaScript Servizio web

Places SDK per iOS fornisce alla tua app informazioni dettagliate sui luoghi, tra cui nome e indirizzo, l'area geografica località specificata come coordinate di latitudine/longitudine, il tipo di luogo (ad esempio come discoteca, negozio di animali, museo e altro ancora. Per accedere a queste informazioni per un luogo specifico, puoi utilizzare l'ID luogo, un identificatore stabile che identifica un luogo.

Dettagli del luogo

La GMSPlace fornisce informazioni su un luogo specifico. Puoi ottenere GMSPlace nei modi seguenti:

Quando richiedi un luogo, devi specificare i tipi di dati relativi ai luoghi da per tornare indietro. Per farlo, passa un valore GMSPlaceField, specificando i dati tipi da restituire. Questo è un aspetto importante, in quanto influirà per ogni richiesta.

Perché i risultati dei dati sui luoghi non possono essere vuoti, ma solo luogo vengono restituiti risultati con dati (ad esempio, se un luogo richiesto non ha foto, il campo photos non sarà presente nel risultato).

L'esempio seguente trasmette un elenco di due valori di campo per specificare i dati restituiti da una richiesta:

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);
  

Scopri di più su campi del luogo. Per maggiori informazioni informazioni su come vengono fatturate le richieste di dati di Place, vedi Utilizzo e fatturazione.

La GMSPlace può contenere i seguenti dati sui luoghi:

  • name - Il nome del luogo.
  • editorialSummary: fornisce una semplice descrizione di un luogo.
  • placeID - L'identificatore testuale del luogo. Letto scopri di più sugli ID luogo nel resto di questa pagina.
  • coordinate: la posizione geografica del luogo, specificate come coordinate di latitudine e longitudine.
  • phoneNumber – Il numero di telefono del luogo, in formato internazionale.
  • formattedAddress - L'indirizzo leggibile di questa in ogni località.

    Spesso, questo indirizzo equivale all'indirizzo postale. Tieni presente che alcune paesi, come il Regno Unito, non consentono la distribuzione di veri e propri indirizzi postali a causa di limitazioni di licenza.

    L'indirizzo formattato è logicamente composto da uno o più indirizzi componenti. Ad esempio, l'indirizzo "111 8th Avenue, New York, NY" è costituito dai seguenti componenti: "111" (il numero civico), "8th Avenue" (il percorso), "New York" (la città) e "NY" (stato USA).

    Non analizzare l'indirizzo formattato in modo programmatico. Dovresti invece usare i singoli componenti dell'indirizzo, che la risposta dell'API include in aggiunta nel campo dell'indirizzo formattato.

  • openingHours - Gli orari di apertura del luogo (come rappresentato da GMSOpeningHours). Chiama GMSOpeningHours.weekdayText per ottenere un elenco di stringhe localizzate degli orari di apertura giornalieri della settimana. Chiama il numero GMSOpeningHours.Periods per restituire un elenco di GMSPeriod con informazioni più dettagliate equivalenti ai dati forniti da weekdayText. Nota: se un luogo è sempre aperto, il periodo di tempo è rappresentato come Domenica a mezzanotte e il valore closeEvent è nullo.
  • currentOpeningHours e secondaryOpeningHours: campi che vanno incontro a festività e cambiamenti temporanei degli orari di un luogo.
  • addressComponents: un array di GMSAddressComponent oggetti che rappresentano i componenti per un luogo. Questi componenti vengono forniti allo scopo di estrarre informazioni strutturate sull'indirizzo di un luogo, ad esempio trovare la città in cui si trova un luogo. Non utilizzare questi componenti per la formattazione degli indirizzi; usa l'formattedAddress che fornisce un indirizzo localizzato formattato.

    Prendi nota delle seguenti informazioni su addressComponents array:

    • L'array dei componenti dell'indirizzo può contenere più componenti rispetto formattedAddress.
    • L'array non include necessariamente tutte le entità politiche contenere un indirizzo, diverso da quelli inclusi nei formattedAddress.
    • Non è garantito che il formato della risposta rimanga lo stesso tra richieste. In particolare, il numero di addressComponents varia in base all'indirizzo richiesto e può cambiare nel tempo in base all'indirizzo nello stesso indirizzo. Un componente può cambiare posizione nell'array. Il tipo di componente può cambiare. Un particolare componente può essere mancante in una risposta successiva.
  • userRatingsTotal: rappresenta il numero di recensioni che costituiscono la valutazione del luogo.

La GMSPlace contiene le seguenti funzioni membro:

  • isOpen calcola se un luogo è aperto in un determinato momento, in base a openingHours e UTCOffsetMinutes, e la data e l'ora correnti.
  • isOpenAtDate calcola se un luogo è aperto in una determinata data, in base a openingHours e UTCOffsetMinutes, e la data e l'ora correnti.
  • Quando utilizzi queste funzioni per ottenere gli orari di apertura e/o le date, l'originale fetchPlaceFromPlaceID: o findPlaceLikelihoodsFromUserLocationWithPlaceFields: la richiesta deve specificare SIA GMSPlaceFieldOpeningHours che GMSPlaceFieldUTCOffsetMinutes campi. Se manca uno di questi campi, viene restituito l'elemento GMSPlace non conterrà orari o date di apertura e la chiamata restituirà GMSPlaceOpenStatusUnknown. Per garantire risultati precisi, richiedi GMSPlaceFieldBusinessStatus e GMSPlaceFieldUTCOffsetMinutes nella richiesta di luogo originale. Se non richiesto, si presume che se l'attività è operativa.

    Guarda questo video per scoprire come utilizzare isOpen con Place Details.

Ottieni orari eccezionali

L'orario di apertura regolare è disponibile fino a openingHours, currentOpeningHours e secondaryOpeningHours, l'assistenza è disponibile in caso di ferie e modifiche temporanee agli orari. Gli orari eccezionali per questi giorni speciali possono essere filtrati e presentati, se disponibili.

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
    }
}

Ottieni un luogo tramite ID

Un ID luogo è un identificatore testuale che identifica in modo univoco un luogo. Nella Places SDK per iOS, puoi recuperare l'ID di un luogo da una GMSPlace . Puoi memorizzare l'ID luogo e utilizzarlo per recuperare il GMSPlace di nuovo in seguito.

Per ottenere un luogo tramite ID, chiama GMSPlacesClient fetchPlaceFromPlaceID:, passando i seguenti parametri:

  • Una stringa contenente un ID luogo.
  • Uno o più GMSPlaceField, che specificano i tipi di dati da restituire.
  • Un token di sessione se viene effettuata la chiamata per concludere una query di completamento automatico. Altrimenti, ignora.
  • Un GMSPlaceResultCallback per gestire il risultato.

L'API richiama il metodo di callback specificato, passando un GMSPlace . Se il luogo non viene trovato, l'oggetto luogo è nullo.

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]);
  }
}];

Attribuzioni display nell'app

Quando la tua app mostra informazioni ottenute da GMSPlacesClient lookUpPlaceID:callback:, l'app deve mostrare anche le attribuzioni. Consulta la documentazione su attribuzioni.

Scopri di più sugli ID luogo

L'ID luogo utilizzato in Places SDK per iOS è lo stesso di utilizzata nel API Places, SDK Places per Android e altre API di Google.

Ogni ID luogo può fare riferimento a un solo luogo, ma un singolo luogo può averne più di di un ID luogo.

In alcuni casi, un luogo può ottenere un nuovo ID luogo. Ad esempio, questo può accadere se un'attività si sposta in una nuova sede.

Quando richiedi un luogo specificando un ID luogo, hai la certezza che riceverai sempre lo stesso punto nella risposta (se il luogo esiste già). Tieni presente, tuttavia, che la risposta potrebbe contenere un ID luogo che diverso da quello indicato nella tua richiesta.

Per ulteriori informazioni, consulta panoramica di Place ID.