Wyszukiwanie w pobliżu (nowe)

Żądanie wyszukiwania w pobliżu (nowe) pobiera jako dane wejściowe region do przeszukania. jest określona jako okrąg zdefiniowany przez współrzędne geograficzne punktu środkowego okrąg i promień w metrach. Żądanie zwraca listę pasujących miejsc, a każde z nich jest reprezentowane przez GMSPlace obiektu w określonym obszarze wyszukiwania.

Domyślnie odpowiedź zawiera miejsca dowolnego typu w obszarze wyszukiwania. Opcjonalnie możesz filtrować odpowiedź, określając listę typów miejsc, które chcesz wyraźnie uwzględnić w wyniku lub z niej wykluczyć . Możesz na przykład określić, że chcesz uwzględnić w odpowiedzi tylko te miejsca, które są określonego typu „restauracja”, „piekarnia” i „kawiarnia” albo wykluczyć wszystkie miejsca typu „szkoła”.

Żądania wyszukiwania w pobliżu (nowe)

Wyślij prośbę o wyszukiwanie w pobliżu za pomocą połączenia GMSPlacesClient searchNearbyWithRequest:, zaliczając GMSPlaceSearchNearbyRequest , który określa parametry żądania i metodę wywołania zwrotnego typu GMSPlaceSearchNearbyResultCallback przetwarza odpowiedź.

Obiekt GMSPlaceSearchNearbyRequest określa wszystkie wartości wymagane i opcjonalne dla żądania. Wymagane parametry to:

  • Lista pól do zwrócenia w obiekcie GMSPlace, tzw. maska pola zdefiniowana przez GMSPlaceProperty Jeśli nie określisz co najmniej jednego pola na liście pól lub jeśli pominiesz listę pól, wywołanie zwróci błąd.
  • Ograniczenie lokalizacji, czyli kółko definiujące obszar wyszukiwania.

To przykładowe żądanie wyszukiwania w pobliżu określa, że odpowiedź obiekty GMSPlace zawierają nazwę miejsca (GMSPlacePropertyName) i jego współrzędne. (GMSPlacePropertyCoordinate) dla każdego obiektu GMSPlace w wyszukiwaniu wyników. Filtruje też odpowiedź, aby wyświetlić tylko miejsca typu „restauracja” i „kawiarnia”.

Swift

// Array to hold the places in the response
var placeResults: [GMSPlace] = []

// Define the search area as a 500 meter diameter circle in San Francisco, CA.
let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500)

// Specify the fields to return in the GMSPlace object for each place in the response.
let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue}

// Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return.
var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties)
let includedTypes = ["restaurant", "cafe"]
request.includedTypes = includedTypes

let callback: GMSPlaceSearchNearbyResultCallback = { [weak self] results, error in
  guard let self, error == nil else {
    if let error {
      print(error.localizedDescription)
    }
    return
  }
  guard let results = results as? [GMSPlace] else {
    return
  }
  placeResults = results
}

GMSPlacesClient.shared().searchNearby(with: request, callback: callback)

Objective-C

// Array to hold the places in the response
_placeResults = [NSArray array];

// Define the search area as a 500 meter diameter circle in San Francisco, CA.
id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500);

// Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return.
GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc]
  initWithLocationRestriction:circularLocation
              placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]];

// Set the place types to filter on.
NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ];
request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes];

[_placesClient searchNearbyWithRequest:request
  callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) {
    if (error != nil) {
      NSLog(@"An error occurred %@", [error localizedDescription]);
      return;
    } else {
        // Get list of places.
        _placeResults = places;
    }
  }
];

Pakiet SDK Miejsc Swift na iOS (wersja przedpremierowa)

let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500)
let searchNearbyRequest = SearchNearbyRequest(
  locationRestriction: restriction,
  placeProperties: [ .name, .coordinate],
  includedTypes: [ .restaurant, .cafe ],
)
switch await placesClient.searchNearby(with: searchNearbyRequest) {
case .success(let places):
  // Handle places
case .failure(let placesError):
  // Handle error
}

Odpowiedzi na wyszukiwanie w pobliżu

Interfejs API wyszukiwania w pobliżu zwraca tablicę dopasowań w postaci GMSPlace obiekty, po 1 obiekcie GMSPlace na pasujące miejsce.

Uzyskaj stan „Otwarty”

Obiekt GMSPlacesClient zawiera funkcję członka o nazwie isOpenWithRequest (isOpenRequest w języku Swift i isPlaceOpenRequest w GooglePlacesSwift), która zwraca odpowiedź wskazującą, czy miejsce jest obecnie otwarte, zgodnie z czasem określonym w rozmowie.

Ta metoda przyjmuje jeden argument typu GMSPlaceIsOpenWithRequest, który zawiera:

  • Obiekt GMSPlace lub ciąg znaków określający identyfikator miejsca. Więcej informacji o tworzeniu obiektu Place z wymaganymi polami znajdziesz w artykule Szczegóły miejsca.
  • Opcjonalny obiekt NSDate (Obj-C) lub Date (Swift) określający godzinę, którą chcesz sprawdzić. Jeśli nie podasz żadnej godziny, domyślną wartością będzie teraz.
  • Metoda GMSPlaceOpenStatusResponseCallback do obsługi odpowiedzi.
  • >
.

Metoda GMSPlaceIsOpenWithRequest wymaga ustawienia w obiekcie GMSPlace tych pól:

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

Jeśli te pola nie są podane w obiekcie Place lub jeśli przekazujesz identyfikator miejsca, metoda używa GMSPlacesClient GMSFetchPlaceRequest: do ich pobrania.

isOpenWithRequest odpowiedź

isOpenWithRequest zwraca obiekt GMSPlaceIsOpenResponse zawierający wartość logiczną o nazwie status, która wskazuje, czy firma jest otwarta, zamknięta, czy też jej stan jest nieznany.

Język Wartość, jeśli otwarta Wartość w przypadku zamknięcia Wartość, jeśli stan jest nieznany
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown
GooglePlacesSwift (wersja testowa) true false nil

Płatności za usługę isOpenWithRequest

Przykład: wysłanie żądania GMSPlaceIsOpenWithRequest

Przykład poniżej pokazuje, jak zainicjować obiekt GMSPlaceIsOpenWithRequest w istniejącym obiekcie GMSPlace.

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
          }
          

Wymagane parametry

Użyj obiektu GMSPlaceSearchNearbyRequest, aby określić wymagane parametry dla: i zapytania.

  • Lista pól

    W prośbie o podanie szczegółowych informacji o miejscu należy podać dane, które mają zwracany dla obiektu GMSPlace jako maska pola. Aby zdefiniować maska pola, przekaż tablicę wartości z argumentu GMSPlaceProperty do obiektu GMSPlaceSearchNearbyRequest. Maskowanie pól to sprawdzona metoda projektowania, dzięki której nie żądasz zbędnych danych. co pozwala uniknąć niepotrzebnego czasu przetwarzania i opłat.

    Wypełnij co najmniej jedno z tych pól:

    • Te pola aktywują Kod SKU Wyszukiwarka w pobliżu (podstawowa):

      GMSPlacePropertyAddressComponents, GMSPlacePropertyBusinessStatus, GMSPlacePropertyCoordinate, GMSPlacePropertyFormattedAddress, GMSPlacePropertyName, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyPhotos, GMSPlacePropertyPlaceID, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyViewport, GMSPlacePropertyWheelchairAccessibleEntrance

    • Te pola aktywują Kod SKU Wyszukiwarki w pobliżu (zaawansowane):

      GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite

    • Te pola aktywują Kod SKU (preferowany) funkcji wyszukiwania w pobliżu:

      GMSPlacePropertyCurbsidePickup, GMSPlacePropertyDelivery, GMSPlacePropertyDineIn, GMSPlacePropertyEditorialSummary, GMSPlacePropertyReservable, GMSPlacePropertyReviews, GMSPlacePropertyServesBeer, GMSPlacePropertyServesBreakfast, GMSPlacePropertyServesBrunch, GMSPlacePropertyServesDinner, GMSPlacePropertyServesLunch, GMSPlacePropertyServesVegetarianFood, GMSPlacePropertyServesWine, GMSPlacePropertyTakeout

    Poniższy przykład przekazuje listę 2 wartości pól aby wskazać, że obiekt GMSPlace zwrócony przez żądanie zawiera name i placeID pola:

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

    Pakiet SDK Miejsc Swift na iOS (wersja przedpremierowa)

    // Specify the place data types to return.
    let fields: [PlaceProperty] = [.placeID, .displayName]
            
  • locationRestriction

    GMSPlaceLocationRestriction obiektu, który określa obszar do przeszukania, określony jako okrąg, zdefiniowany przez punkt środkowy i promień w metrach. Promień musi mieścić się w zakresie od 0,0 do 50 000,0 włącznie. Domyślny promień to 0,0 Musisz ustawić ten parametr w żądaniu na wartość większą niż 0,0.

Parametry opcjonalne

Użyj obiektu GMSPlaceSearchNearbyRequest, aby określić opcjonalne parametry dla: i zapytania.

  • includeTypes/excludedTypes, includePrimaryTypes/excludedPrimaryTypes

    Umożliwia określenie listy typów z listy typów Tabela A używana do filtrowania w wynikach wyszukiwania. W każdej kategorii ograniczeń typu można określić maksymalnie 50 typów.

    Miejsce może mieć tylko jeden typ główny Tabela A powiązana z . Na przykład typ podstawowy to "mexican_restaurant" lub "steak_house". Używaj includedPrimaryTypes i excludedPrimaryTypes, według których filtrować wyniki główny typ miejsca.

    Miejsce może też mieć wiele wartości typów z typów Tabela A i powiązane z nią. Na przykład restauracja może mieć następujące typy: "seafood_restaurant", "restaurant", "food" "point_of_interest", "establishment". Użyj formatu: includedTypes i excludedTypes, aby filtrować wyniki na liście typów powiązanych z danego miejsca.

    Gdy określisz ogólny typ podstawowy, na przykład "restaurant" lub "hotel", odpowiedź może zawierać miejsca o bardziej konkretnym typie głównym niż określony przez Ciebie. Na przykład określasz, że ma być uwzględniony główny typ "restaurant" Odpowiedź może wtedy zawierać miejsca o głównym typie "restaurant", ale odpowiedź może też zawierać miejsca o bardziej szczegółowych typ główny, na przykład "chinese_restaurant" lub "seafood_restaurant".

    Jeśli wyszukiwanie jest określone z ograniczeniami wielu typów, tylko miejsca które są zgodne ze wszystkimi ograniczeniami. Jeśli na przykład wpiszesz {"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}, zwrócone miejsca świadczą usługi związane z "restaurant", ale nie działają głównie jako "steak_house".

    includedTypes

    Lista typów miejsc z Tabela A do wyszukania. Jeśli pominiesz ten parametr, zwracane będą miejsca wszystkich typów.

    excludedTypes

    Lista typów miejsc z Tabela A, którą chcesz wykluczyć z grupy .

    Jeśli podasz zarówno includedTypes (np. "school"), jak i parametr excludedTypes (np. "primary_school") w żądaniu, wtedy odpowiedź zawiera miejsca zaklasyfikowane jako "school", ale nie jako "primary_school" Odpowiedź zawiera miejsca pasujące do co najmniej jednego z tych atrybutów includedTypes i żadne z excludedTypes.

    Jeśli występują kolidujące typy, takie jak typ występujący w obiekcie includedTypes i excludedTypes, zwracany jest błąd INVALID_REQUEST.

    includedPrimaryTypes

    Lista głównych rodzajów miejsc z Tabela A do uwzględnienia do wyszukiwania.

    excludedPrimaryTypes

    Lista głównych rodzajów miejsc z Tabela A do wykluczenia z wyników wyszukiwania.

    Jeśli występują sprzeczne typy główne, takie jak typ występujący w obu includedPrimaryTypes i excludedPrimaryTypes, Zwracany jest INVALID_ARGUMENT błąd.

  • maxResultCount

    Określa maksymalną liczbę wyników miejsc do zwrócenia. Wymagana wartość z zakresu 1 i 20 (domyślnie) włącznie.

  • rankPreference

    Typ rankingu, który ma zostać użyty. Jeśli ten parametr zostanie pominięty, wyniki będą uporządkowane według popularności. Możliwe wartości:

    • .popularity (domyślnie) sortuje wyniki na podstawie ich popularności.
    • .distance sortuje wyniki w kolejności rosnącej według odległości od określoną lokalizację.
  • regionCode

    Kod regionu używany do formatowania odpowiedzi podany jako dwuznakową wartość kodu CLDR. Nie ma wartości domyślnej.

    Jeśli nazwa kraju w polu formattedAddress w odpowiedzi jest zgodna z nazwą kraju regionCode, kod kraju został pominięty w polu formattedAddress. Ten parametr nie ma wpływu na tabelę adrFormatAddress, która zawsze obejmuje kraj lub w domenie shortFormattedAddress, która nigdy jej nie zawiera.

    Większość kodów CLDR jest identycznych z kody ISO 3166-1, z kilkoma istotnymi wyjątkami. Na przykład domena ccTLD Wielkiej Brytanii to „uk” (co.uk), natomiast kod ISO 3166-1 to „gb”. (technicznie dla funkcji podmiotu „Wielkiej Brytanii i Irlandii Północnej”). Ten parametr może wpływać na wyniki w zależności od obowiązującego prawa.

Wyświetl atrybucję w swojej aplikacji

Kiedy aplikacja wyświetla informacje uzyskane z: GMSPlacesClient, takich jak zdjęcia i opinie, aplikacja musi też wyświetlać wymagane informacje o źródłach.

Na przykład właściwość reviews obiektu GMSPlacesClient zawiera tablicę złożoną z maks. pięciu GMSPlaceReview. obiektów. Każdy obiekt GMSPlaceReview może zawierać informacje o atrybucji lub autorach. Jeśli wyświetlasz opinię w aplikacji, musisz też podać informacje o autorze i pochodzeniu danych o pochodzeniu danych.

Więcej informacji znajdziesz w dokumentacji na temat atrybucje.