Wyszukaj tekst (nowa funkcja)

Wyszukiwanie tekstowe zwraca informacje o zbiorze miejsc na podstawie ciągu znaków. Na przykład „pizza w Nowym Jorku”, „sklepy obuwnicze w Ottawě” lub „123 Ulica Główna”. Usługa odpowiada listą miejsc pasujących do ciągu tekstowego i ustawionego ustawienia lokalizacji.

Usługa jest szczególnie przydatna do niejednoznacznych zapytań adresowych w zautomatyzowanym systemie. Elementy ciągu, które nie są adresami, mogą pasować do firm, a także do adresów. Przykłady niejednoznacznych zapytań o adres to źle sformatowane adresy lub żądania, które zawierają elementy inne niż adres, np. nazwy firm. Żądania podobne do pierwszych dwóch przykładów mogą zwrócić zero wyników, chyba że ustawisz lokalizację (np. region, ograniczenie lokalizacji lub preferencje dotyczące lokalizacji).

„10 High Street, UK” lub „123 Main Street, US”. Wiele sklepów „High Street” w Wielkiej Brytanii; wiele sklepów „Main Street” w Stanach Zjednoczonych. Zapytanie nie zwraca pożądanych wyników, chyba że ustawiono ograniczenie lokalizacji.
„Sieć restauracji Nowy Jork” Wiele lokalizacji „sieci restauracji” w Nowym Jorku; brak adresu ulicy ani nawet nazwy ulicy.
„10 High Street, Escher UK” lub „123 Main Street, Pleasanton US”. Tylko jedna „High Street” w brytyjskim mieście Escher; tylko jedna „Main Street” w amerykańskim mieście Pleasanton w Kalifornii.
„NazwaWyjątkowejRestauracji Nowy Jork” Tylko 1 obiekt o tej nazwie w Nowym Jorku; nie ma adresu ulicy, który pozwoliłby odróżnić go od innych.
„pizzerie w Nowym Jorku” Zapytanie zawiera ograniczenie dotyczące lokalizacji, a „pizzerie” to dobrze zdefiniowany typ miejsca. Zwraca ono wiele wyników.
„+1 514-670-8700”

To zapytanie zawiera numer telefonu. Zwraca on wiele wyników dla miejsc powiązanych z tym numerem telefonu.

Wyświetlanie listy miejsc w wyniku wyszukiwania tekstowego

Prześlij żądanie wyszukiwania tekstowego, wywołując funkcję GMSPlacesClient searchByTextWithRequest:, przekazując obiekt GMSPlaceSearchByTextRequest, który definiuje parametry żądania i metodę wywołania zwrotnego typu GMSPlaceSearchByTextResultCallback, aby obsłużyć odpowiedź.

Obiekt GMSPlaceSearchByTextRequest zawiera wszystkie wymaganeopcjonalne parametry żądania. Wymagane parametry to:

  • Lista pól, które mają być zwracane w obiekcie GMSPlace, zwana też maską pola, zdefiniowana przez GMSPlaceProperty. Jeśli na liście pól nie określisz co najmniej 1 pola lub pominiesz tę listę, wywołanie zwróci błąd.
  • Tekst zapytania.

W tym przykładowym żądaniu wyszukiwania tekstu określono, że obiekty GMSPlace w odpowiedzi zawierają nazwę i identyfikator miejsca dla każdego obiektu GMSPlace w wynikach wyszukiwania. Filtruje ona też odpowiedź, aby zwracać tylko miejsca typu „restauracja”.

Swift

// Create the GMSPlaceSearchByTextRequest object.
let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID].map {$0.rawValue}
let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York", placeProperties:myProperties)
request.isOpenNow = true
request.includedType = "restaurant"
request.maxResultCount = 5
request.minRating = 3.5
request.rankPreference = .distance
request.isStrictTypeFiltering = true
request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)

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

let callback: GMSPlaceSearchByTextResultCallback = { [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().searchByText(with: request, callback: callback)

Objective-C

// Create the GMSPlaceSearchByTextRequest object.
GMSPlaceSearchByTextRequest *request =
    [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]];
request.isOpenNow = YES;
request.includedType = @"restaurant";
request.maxResultCount = 5;
request.minRating = 3.5;
request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance;
request.isStrictTypeFiltering = YES;
request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ];
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0);

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

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

Pakiet SDK Miejsc Swift na iOS (wersja podglądowa)

let restriction = RectangularLocationRestriction(
      northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30),
      southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50)
)
let searchByTextRequest = SearchByTextRequest(
        textQuery: "pizza in New York",
        placeProperties: [ .name, .placeID ],
        locationRestriction: restriction,
        includedType: .restaurant,
        maxResultCount: 5,
        minRating: 3.5,
        priceLevels: [ .moderate, .inexpensive ],
        isStrictTypeFiltering: true
)
switch await placesClient.searchByText(with: searchByTextRequest) {
case .success(let places):
  // Handle places
case .failure(let placesError):
  // Handle error
}

Odpowiedzi na wyszukiwanie tekstowe

Interfejs Text Search API zwraca tablicę dopasowań w postaci obiektów GMSPlace, z jednym obiektem GMSPlace na każde pasujące miejsce.

Pobieranie stanu otwartości

Obiekt GMSPlacesClient zawiera funkcję członkowską o nazwie isOpenWithRequest (isOpenRequest w Swift i isPlaceOpenRequest w GooglePlacesSwift), która zwraca odpowiedź wskazującą, czy dane miejsce jest obecnie otwarte, na podstawie czasu określonego w wywołaniu.

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

  • Obiekt GMSPlace lub ciąg znaków określający identyfikator miejsca. Więcej informacji o tworzeniu obiektu Miejsce z wymaganymi polami znajdziesz w sekcji Szczegóły miejsca.
  • Opcjonalny obiekt NSDate (Obj-C) lub Date (Swift), który określa czas, jaki chcesz sprawdzić. Jeśli nie podasz czasu, domyślnie zostanie ustawiona bieżąca chwila.
  • Metoda GMSPlaceOpenStatusResponseCallback do obsługi odpowiedzi.
  • >

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

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

Jeśli te pola nie są dostępne w obiekcie Miejsce lub jeśli przekazujesz identyfikator miejsca, metoda używa do ich pobierania GMSPlacesClient GMSFetchPlaceRequest:.

isOpenWithRequest odpowiedź

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

Język Wartość, jeśli jest otwarta Wartość, jeśli jest zamknięta 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 konto isOpenWithRequest

  • Za pola GMSPlacePropertyUTCOffsetMinutesGMSPlacePropertyBusinessStatus są naliczane opłaty w ramach SKU danych podstawowych. Pozostałe godziny otwarcia są naliczane zgodnie z kodem SKU Szczegóły miejsca (zaawansowane).
  • Jeśli obiekt GMSPlace już zawiera te pola z poprzedniego zapytania, nie zostanie pobrana kolejna opłata.

Przykład: wysłanie prośby GMSPlaceIsOpenWithRequest

Poniższy przykład pokazuje, jak zainicjować GMSPlaceIsOpenWithRequest w 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 GMSPlaceSearchByTextRequest, aby określić wymagane parametry wyszukiwania.

  • Lista pól

    Określ, które właściwości danych o miejscach mają być zwracane. Przekaż listę właściwości GMSPlace, która określa pola danych do zwrócenia. Jeśli pominiesz pole maski, prośba zwróci błąd.

    Listy pól to dobra praktyka projektowania, która pozwala uniknąć przesyłania niepotrzebnych danych, co z kolei pozwala uniknąć niepotrzebnego czasu przetwarzania i opłat.

    Podaj co najmniej 1 z tych pól:

    • Te pola powodują wyświetlenie SKU w wyszukiwaniu tekstowym (tylko identyfikator):

      GMSPlacePropertyPlaceID, GMSPlacePropertyName
    • Te pola wywołują SKU wyszukiwania tekstowego (podstawowego):

      GMSPlacePropertyAddressComponents, GMSPlacePropertyBusinessStatus, GMSPlacePropertyFormattedAddress, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyCoordinate, GMSPlacePropertyPhotos, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyViewport, GMSPlacePropertyWheelchairAccessibleEntrance
    • Te pola powodują wyświetlenie wyszukiwania tekstowego (zaawansowanego) SKU:

      GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite
    • Te pola powodują wyświetlenie SKU w wyszukiwarce tekstowej (preferowane):

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

    ciąg tekstowy, w którym ma być przeprowadzone wyszukiwanie, np. „restauracja”, „123 Ulica Główna” lub „najlepsze miejsce do odwiedzenia w San Francisco”.

Parametry opcjonalne

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

  • includedType

    Ogranicza wyniki do miejsc pasujących do określonego typu zdefiniowanego w tabeli A. Można podać tylko jeden typ. Na przykład:

    • request.includedType = "bar"
    • request.includedType = "pharmacy"
  • isOpenNow

    Jeśli true, zwracaj tylko te miejsca, które są otwarte w momencie wysłania zapytania. Jeśli false, zwraca wszystkie firmy niezależnie od stanu otwarcia. Jeśli ustawisz ten parametr na false, zwracane będą tylko miejsca, które nie podają godzin otwarcia w bazie danych Google Places.

  • isStrictTypeFiltering

    Używany z parametrem includeType. Jeśli ustawisz tę wartość na true, zwrócone zostaną tylko miejsca pasujące do typów określonych przez includeType. Jeśli wartość jest równa fałsz (domyślnie), odpowiedź może zawierać miejsca, które nie pasują do podanych typów.

  • locationBias

    Określa obszar wyszukiwania. Ta lokalizacja służy jako preferencja, co oznacza, że mogą być zwracane wyniki z okolic wskazanej lokalizacji, w tym poza wskazanym obszarem.

    Możesz użyć właściwości locationRestriction lub locationBias, ale nie obu jednocześnie. Załóżmy, że locationRestriction określa region, w którym muszą się znajdować wyniki, a locationBias – region, w którym wyniki muszą się znajdować, ale mogą być poza tym obszarem.

    Określ region jako prostokątny widoczny obszar lub koło.

    • Okrąg jest definiowany 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. Na przykład:

      request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
    • Prostokąt to strefa widoku szerokości i długości geograficznej, reprezentowana przez 2 punkty: dolny lewy i górny prawy. Niski punkt oznacza południowo-zachodni róg prostokąta, a wysoki – północno-wschodni.

      Widoczny obszar jest uważany za zamknięty obszar, co oznacza, że obejmuje swoją krawędź. Granice szerokości geograficznej muszą mieścić się w przedziale od -90 do 90 stopni, a granice długości geograficznej – w przedziale od -180 do 180 stopni:

      • Jeśli low = high, widoczny obszar składa się z tego pojedynczego punktu.
      • Jeśli low.longitude > high.longitude, zakres długości geograficznej jest odwrócony (widoczny obszar przecina linię długości geograficznej 180°).
      • Jeśli low.longitude = –180 stopni, a high.longitude = 180 stopni, widoczny obszar obejmuje wszystkie długości geograficzne.
      • Jeśli low.longitude = 180 stopni, a high.longitude = –180 stopni, zakres długości geograficznej jest pusty.
      • Jeśli low.latitude > high.latitude, zakres szerokości geograficznej jest pusty.
  • locationRestriction

    Określa obszar wyszukiwania. Wyniki spoza określonego obszaru nie są zwracane. Określ region jako prostokątny widoczny obszar. Informacje o definiowaniu widocznego obszaru znajdziesz w opisie atrybutu locationBias.

    Możesz podać wartość locationRestriction lub locationBias, ale nie obie. Pamiętaj, że locationRestriction określa region, w którym muszą się znajdować wyniki, a locationBias – region, w którym wyniki muszą się znajdować, ale mogą być poza tym obszarem.

  • maxResultCount

    Określa maksymalną liczbę wyników wyszukiwania miejsc do zwrócenia. Musi mieścić się w zakresie od 1 do 20 (domyślnie).

  • minRating

    Ogranicza wyniki tylko do tych, których średnia ocena użytkowników jest większa lub równa temu limitowi. Wartości muszą mieścić się w przedziale od 0,0 do 5,0 (włącznie) z wielokrotnością 0,5. Przykład: 0, 0,5, 1,0, ... , 5,0. Wartości są zaokrąglane w górę do najbliższej 0,5. Na przykład wartość 0,6 eliminuje wszystkie wyniki z oceną mniejszą niż 1,0.

  • priceLevels

    Ogranicz wyszukiwanie do miejsc oznaczonych określonymi poziomami cen. Domyślnie wybrane są wszystkie poziomy cen.

    Podaj tablicę z co najmniej 1 wartością zdefiniowaną przez PriceLevel.

    Na przykład:

    request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
  • rankPreference

    Określa sposób, w jaki wyniki są klasyfikowane w odpowiedzi na podstawie typu zapytania:

    • W przypadku zapytania dotyczącego kategorii, np. „Restauracje w Nowym Jorku”, domyślnie jest używany parametr .relevance (uporządkuj wyniki według trafności). Możesz ustawić rankPreference na .relevance lub .distance (uporządkuj wyniki według odległości).
    • W przypadku zapytania bez kategorii, np. „Mountain View, CA”, zalecamy pozostawienie parametru rankPreference niezaznaczonego.
  • regionCode

    Kod regionu użyty do sformatowania odpowiedzi, podany jako 2-znakowy kod CLDR. Ten parametr może też wpływać na wyniki wyszukiwania. Nie ma wartości domyślnej.

    Jeśli nazwa kraju w polu adresu w odpowiedzi jest zgodna z kodem regionu, kod kraju jest pomijany w adresie.

    Większość kodów CLDR jest identyczna z kodami ISO 3166-1, z niektórymi wyjątkami. Na przykład ccTLD Wielkiej Brytanii to „uk” (.co.uk), a jej kod ISO 3166-1 to „gb” (technicznie dla podmiotu „Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej”). Parametr może wpływać na wyniki w zależności od obowiązujących przepisów.

Wyświetlanie informacji o pochodzeniu danych w aplikacji

Jeśli aplikacja wyświetla informacje uzyskane z GMSPlacesClient, takie jak 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ę zawierającą maksymalnie 5 obiektów GMSPlaceReview. Każdy obiekt GMSPlaceReview może zawierać informacje o źródłach i autorach. Jeśli wyświetlasz opinię w aplikacji, musisz też wyświetlić informacje o źródle lub autora.

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