Wyszukiwanie w pobliżu (nowe)

Żądanie wyszukiwania w pobliżu (nowe) obejmuje dane wejściowe regionu do wyszukiwania określonego jako okrąg określony przez współrzędne szerokości i długości geograficznej punktu środkowego oraz promień w metrach. Żądanie zwraca listę pasujących miejsc w określonym obszarze wyszukiwania, z których każde jest reprezentowane przez obiekt GMSPlace.

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

Prośby o wyszukiwanie w pobliżu (nowe)

Wyślij żądanie wyszukiwania w pobliżu, wywołując GMSPlacesClient searchNearbyWithRequest:, przesyłając obiekt GMSPlaceSearchNearbyRequest definiujący parametry żądania i metodę wywołania zwrotnego typu GMSPlaceSearchNearbyResultCallback na potrzeby obsługi odpowiedzi.

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

  • Lista pól do zwrócenia w obiekcie GMSPlace, nazywana też maską pola, zgodnie z definicją za pomocą właściwości GMSPlaceProperty. Jeśli nie określisz co najmniej jednego pola na liście pól lub pominiesz tę listę, wywołanie zwróci błąd.
  • Ograniczenie lokalizacji, czyli okrąg określający obszar wyszukiwania.

To przykładowe żądanie wyszukiwania w pobliżu określa, że odpowiedź obiektów GMSPlace zawiera nazwę miejsca (GMSPlacePropertyName) i współrzędne miejsca (GMSPlacePropertyCoordinate) dla każdego obiektu GMSPlace w wynikach wyszukiwania. 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;
    }
  }
];

GooglePlacesSwift

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 wyszukiwania w pobliżu

Interfejs w pobliżu zwraca tablicę dopasowań w postaci obiektów GMSPlace, z którym na każde pasujące miejsce odpowiada 1 obiekt GMSPlace.

Oprócz pól danych obiekt GMSPlace w odpowiedzi zawiera te funkcje składowe:

  • isOpen oblicza, czy dane miejsce jest otwarte o określonej godzinie.
  • isOpenAtDate oblicza, czy dane miejsce jest otwarte w określonym dniu.

Wymagane parametry

Określ parametry wyszukiwania za pomocą obiektu GMSPlaceSearchNearbyRequest.

  • Lista pól

    Żądając szczegółów miejsca, musisz określić dane, które mają być zwracane w obiekcie GMSPlace dla tego miejsca jako maska pola. Aby zdefiniować maskę pola, przekaż tablicę wartości z zakresu GMSPlaceProperty do obiektu GMSPlaceSearchNearbyRequest. Maskowanie pól to dobra praktyka projektowa, która pozwala uniknąć żądania zbędnych danych, co pozwala uniknąć niepotrzebnego czasu przetwarzania i opłat.

    Określ co najmniej jedno z tych pól:

    • Te pola wywołują kod SKU wyszukiwania w pobliżu (podstawowe):

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

    • Te pola wywołują kod SKU wyszukiwania w pobliżu (zaawansowane):

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

    • Te pola wywołują kod SKU wyszukiwania w pobliżu (preferowane):

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

    W tym przykładzie przekazujemy listę 2 wartości pól, aby wskazać, że obiekt GMSPlace zwrócony przez żądanie zawiera pola name i 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]
            
  • locationRestriction

    Obiekt GMSPlaceLocationRestriction określający region do przeszukania określony jako okrąg określony 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. W żądaniu musisz ustawić wartość większą niż 0,0.

Parametry opcjonalne

Aby określić opcjonalne parametry wyszukiwania, użyj obiektu GMSPlaceSearchNearbyRequest.

  • includeTypes/excludedTypes, includePrimaryTypes/excludedPrimaryTypes

    Umożliwia określenie listy typów z typów Tabela A służących do filtrowania wyników wyszukiwania. W każdej kategorii ograniczeń typu można określić do 50 typów.

    Miejsce może mieć tylko jeden typ podstawowy z powiązanych z nim typów tabeli A. Typem podstawowym może być na przykład "mexican_restaurant" lub "steak_house". Użyj właściwości includedPrimaryTypes i excludedPrimaryTypes, aby filtrować wyniki według podstawowego typu miejsca.

    Miejsce może też mieć wartości wielu typów z powiązanych z nim typów tabeli A. Na przykład restauracja może mieć te typy: "seafood_restaurant", "restaurant", "food", "point_of_interest", "establishment". Użyj właściwości includedTypes i excludedTypes, aby filtrować wyniki na liście typów powiązanych z miejscem.

    Jeśli wyszukiwanie jest określone z wieloma ograniczeniami typów, zwracane są tylko miejsca, które spełniają wszystkie te ograniczenia. Jeśli na przykład podasz {"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}, zwrócone miejsca świadczą usługi powiązane z "restaurant", ale nie działają głównie jako "steak_house".

    includedTypes

    Lista typów miejsc z tabeli A do wyszukania. W przypadku pominięcia tego parametru zwracane są miejsca wszystkich typów.

    excludedTypes

    Lista typów miejsc z tabeli A, które mają zostać wykluczone z wyszukiwania.

    Jeśli w żądaniu podasz zarówno właściwość includedTypes (np. "school"), jak i excludedTypes (np. "primary_school"), odpowiedź będzie zawierała miejsca zaklasyfikowane jako "school", ale nie jako "primary_school". Odpowiedź zawiera miejsca pasujące do co najmniej 1 z parametrów includedTypes i żadnego z podanych parametrów excludedTypes.

    Jeśli wystąpią jakiekolwiek sprzeczne typy, np. typy występujące zarówno w includedTypes, jak i w excludedTypes, zostanie zwrócony błąd INVALID_REQUEST.

    includedPrimaryTypes

    Lista typów miejsc głównych z tabeli A, które mają zostać uwzględnione w wyszukiwaniu.

    excludedPrimaryTypes

    Lista typów miejsc głównych z tabeli A, które mają zostać wykluczone z wyszukiwania.

    Jeśli wystąpią jakiekolwiek sprzeczne typy podstawowe, takie jak typ występujący zarówno w atrybutach includedPrimaryTypes, jak i excludedPrimaryTypes, zwracany jest błąd INVALID_ARGUMENT.

  • maxResultCount

    Określa maksymalną liczbę zwracanych wyników wyszukiwania miejsc. Wartość musi mieścić się w przedziale od 1 do 20 (domyślnie) włącznie.

  • rankPreference

    Typ rankingu, który ma zostać użyty. Jeśli pominiesz ten parametr, wyniki będą uporządkowane według popularności. Może mieć jedną z tych 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ślonej lokalizacji.
  • regionCode

    Kod regionu używany do formatowania odpowiedzi, określony jako dwuznakowy kod CLDR. Brak wartości domyślnej.

    Jeśli nazwa kraju w polu formattedAddress w odpowiedzi jest zgodna z wartością regionCode, kod kraju jest pomijany w polu formattedAddress. Ten parametr nie ma wpływu na element adrFormatAddress, który zawsze zawiera nazwę kraju, lub na shortFormattedAddress, który nigdy go nie uwzględnia.

    Większość kodów CLDR jest identyczna z kodami ISO 3166-1 z kilkoma wyjątkami. Na przykład domena ccTLD w Wielkiej Brytanii to „uk” (.co.uk), a kod ISO 3166-1 to „gb” (technicznie oznaczający jednostkę „Wielka Brytania i Irlandia Północna”). Parametr może wpływać na wyniki w zależności od obowiązującego prawa.

Wyświetlanie atrybucji w aplikacji

Jeśli aplikacja wyświetla informacje uzyskane ze strony GMSPlacesClient, np. zdjęcia i opinie, musi też wyświetlać wymagane informacje o źródłach.

Na przykład właściwość reviews obiektu GMSPlacesClient zawiera tablicę z maksymalnie 5 obiektami GMSPlaceReview. Każdy obiekt GMSPlaceReview może zawierać atrybucje i informacje o autorach. Jeśli wyświetlasz opinię w aplikacji, musisz też podać informację o autorze.

Więcej informacji znajdziesz w dokumentacji dotyczącej atrybucji.