Szczegóły miejsc

Pakiet SDK Places na iOS dostarcza Twojej aplikacji bogate informacje informacje o miejscach, w tym ich nazwę i adres, położenie geograficzne, lokalizacja określona za pomocą współrzędnych geograficznych, rodzaj miejsca (np. klub nocny, sklep zoologiczny, muzeum). Aby uzyskać dostęp do tych informacji dla konkretnego miejsca, możesz użyć identyfikatora miejsca, stałego identyfikatora, wskazuje miejsce.

Informacje o miejscu

GMSPlace Classroom zawiera informacje o konkretnym miejscu. Możesz zdobyć GMSPlace możesz użyć w następujący sposób:

.

W żądaniu danego miejsca należy podać typy danych o miejscu, . Aby to zrobić, przekaż GMSPlaceField, określając dane typy do zwrócenia. Jest to ważne, ponieważ będzie to miało wpływ za każde żądanie.

Ponieważ wyniki z danymi o miejscach nie mogą być puste, należy jedynie wstawić zwracane są wyniki z danymi (na przykład jeśli żądane miejsce nie ma wartości zdjęć, w wyniku nie będzie pola photos).

Ten przykład przekazuje listę 2 wartości pól. w celu określenia danych zwracanych przez żądanie:

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

Więcej informacji o pola miejsc. Więcej informacje na temat sposobu rozliczania żądań danych o miejscach, zobacz Korzystanie i rozliczenia.

GMSPlace class może zawierać następujące dane o miejscu:

  • name – nazwa miejsca.
  • editorialSummary – prosty opis miejsca.
  • placeID – tekstowy identyfikator miejsca. Odczytano o identyfikatorach miejsc znajdziesz w dalszej części tej strony.
  • coordinate – lokalizacja geograficzna miejsca, określane za pomocą współrzędnych geograficznych.
  • phoneNumber – numer telefonu miejsca w w formacie międzynarodowym.
  • formattedAddress – czytelny dla człowieka adres lokalizacji.

    Adres ten jest często odpowiednikiem adresu pocztowego. Pamiętaj, że niektóre takich jak Wielka Brytania, nie zezwalają na dystrybucję prawdziwego adresów pocztowych ze względu na ograniczenia licencyjne.

    Sformatowany adres składa się logicznie z jednego lub wielu adresów . Na przykład adres „ul. Polna 13, Warszawa” składa się z następujących komponentów: „111” (numer domu), „Ósma Aleja” (trasa), „Nowy Jork” (miasto) i „NY” (stan w USA).

    Nie analizuj sformatowanego adresu automatycznie. Zamiast tego użyj poszczególnych składników adresu, które zawiera odpowiedź interfejsu API do sformatowanego pola adresu.

  • openingHours – godziny otwarcia miejsca (np. reprezentowane przez: GMSOpeningHours). Zadzwoń do nas GMSOpeningHours.weekdayText, aby uzyskać listę zlokalizowanych ciągów znaków w godzinach pracy w danym tygodniu. Zadzwoń pod numer GMSOpeningHours.Periods by zwrócić listę elementów typu GMSPeriod z bardziej szczegółowymi informacjami co odpowiada danym dostarczonym przez weekdayText. Uwaga: jeśli miejsce jest zawsze otwarte, okres jest przedstawiany jako Niedziela o północy, a closeEvent ma wartość null.
  • currentOpeningHours i secondaryOpeningHours – pola, które odnoszą się do urlopu, oraz tymczasowe zmiany w harmonogramie dotyczące danego miejsca.
  • addressComponents – tablica z GMSAddressComponent obiektów reprezentujących komponenty adresu miejsca. Te komponenty są udostępniane, aby: wyodrębnianie uporządkowanych informacji o adresie miejsca, np. znalezienie miasta, w którym znajduje się dane miejsce. Nie używaj tych komponentów do formatowania adresu; zamiast tego użyj funkcji formattedAddress która zapewnia zlokalizowany adres w formacie.

    Zwróć uwagę na te informacje na temat: addressComponents tablica:

    • Tablica komponentów adresu może zawierać więcej komponentów niż formattedAddress
    • Tablica nie musi obejmować wszystkich podmiotów politycznych, które zawierają adres, oprócz tych zawartych w tagu formattedAddress
    • Nie ma gwarancji, że format odpowiedzi będzie taki sam żądań. W szczególności chodzi o liczbę addressComponents zmienia się w zależności od żądanego adresu i może się zmieniać pod tym samym adresem. Komponent może zmienić pozycję w tablicy. Typ komponentu może się zmienić. Konkretnym komponentem może być których brakuje w późniejszej odpowiedzi.
  • userRatingsTotal – określa, z ilu opinii składa się liczba opinii; ocenę miejsca.

GMSPlace class zawiera następujące funkcje składowe:

  • isOpen oblicza, czy dane miejsce jest w danym czasie otwarte, na podstawie openingHours oraz UTCOffsetMinutes, oraz bieżącą datę i godzinę.
  • isOpenAtDate określa, czy miejsce jest otwarte w danym dniu, na podstawie openingHours oraz UTCOffsetMinutes, oraz bieżącą datę i godzinę.
  • Przy użyciu tych funkcji do uzyskania godzin otwarcia lub dat otwarcia fetchPlaceFromPlaceID: lub findPlaceLikelihoodsFromUserLocationWithPlaceFields: żądanie musi określać BOTH GMSPlaceFieldOpeningHours i GMSPlaceFieldUTCOffsetMinutes . Jeśli brakuje któregoś z tych pól, wynikowy GMSPlace nie będzie zawierać godzin ani dat otwarcia, a wywołanie zwróci GMSPlaceOpenStatusUnknown Aby uzyskać dokładne wyniki, poproś GMSPlaceFieldBusinessStatus i GMSPlaceFieldUTCOffsetMinutes tych pól w pierwotnym żądaniu miejsca. Jeśli żądanie nie zostanie wysłane, przyjmuje się, że firma funkcjonuje.

    Aby dowiedzieć się, jak używać tej funkcji, obejrzyj ten film. isOpen z informacjami o miejscu.

Uzyskaj wyjątkowe godziny

Standardowe godziny otwarcia obowiązują do openingHours, a currentOpeningHours i secondaryOpeningHours obsługują zmiany w harmonogramie świątecznym i tymczasowe. Możesz przefiltrować i wyświetlić niestandardowe godziny otwarcia w te dni, jeśli są dostępne.

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

Znajdź miejsce na podstawie identyfikatora

Identyfikator miejsca to identyfikator tekstowy jednoznacznie identyfikujący miejsce. W SDK Miejsc na iOS można pobrać identyfikator miejsca z GMSPlace obiektu. Można zapisać identyfikator miejsca i użyć go do pobrania GMSPlace możesz zobaczyć go później.

Aby uzyskać miejsce na podstawie identyfikatora, zadzwoń pod numer GMSPlacesClient fetchPlaceFromPlaceID:, przekazując te parametry:

  • Ciąg tekstowy zawierający identyfikator miejsca.
  • Co najmniej jeden element typu GMSPlaceField, określający typy danych do zwrócenia.
  • Token sesji, jeśli nastąpi wywołanie w celu zakończenia zapytania autouzupełniania. W przeciwnym razie przekaż nil.
  • GMSPlaceResultCallback do obsługi wyniku.

Interfejs API wywołuje określoną metodę wywołania zwrotnego, przekazując atrybut GMSPlace obiektu. Jeśli miejsce nie zostanie znalezione, obiekt miejsca ma wartość nil.

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

Wyświetl atrybucję w swojej aplikacji

Kiedy aplikacja wyświetla informacje uzyskane z: GMSPlacesClient lookUpPlaceID:callback:, aplikacja musi też wyświetlać informacje o źródłach. Zobacz dokumentację na stronie atrybucje.

Więcej informacji o identyfikatorach miejsc

Identyfikator miejsca używany w pakiecie SDK Miejsc dla iOS jest taki sam jak identyfikator używane w Places API, Places SDK na Androida i innych interfejsów API Google.

Każdy identyfikator miejsca może odnosić się tylko do jednego miejsca, ale jedno miejsce może mieć ich więcej jeden identyfikator miejsca.

Istnieją okoliczności, które mogą spowodować, że dane miejsce otrzyma nowy identyfikator. Może się tak na przykład zdarzyć, gdy firma przeprowadzi się w nowe miejsce.

Zamawiając miejsce, podając jego identyfikator, masz pewność, że w odpowiedzi otrzymasz zawsze to samo miejsce (jeśli miejsce ). Pamiętaj jednak, że odpowiedź może zawierać identyfikator miejsca, który inny niż w prośbie.

Więcej informacji: omówienie identyfikatora miejsca.