Wyszukiwanie tekstu (nowość)

Wyszukiwanie tekstowe zwraca informacje o zbiorze miejsc na podstawie ciągu znaków. Na przykład „pizza w Krakowie” lub „sklepy obuwnicze w pobliżu Ottawa”, lub „ul. Główna 123”. W odpowiedzi usługa przesyła listę miejsc. pasującego do ciągu tekstowego i dowolnego ustawionego uprzedzenia lokalizacji.

Usługa jest szczególnie przydatna do tworzenia niejednoznacznych adresów w zautomatyzowanym systemie, i inne niż adresowe mogą być dopasowane do adresów. Przykłady niejednoznacznych zapytań dotyczących adresu to źle sformatowane adresy lub żądań zawierających składniki niezwiązane z adresem, np. nazwy firm. Żądania takie jak 2 pierwsze przykłady mogą zwrócić zero wyników, chyba że jest ustawione na podstawie lokalizacji.

„ul. Główna 10, Wielka Brytania” lub „ul. Główna 123, USA” wiele numerów „High Street” w Wielkiej Brytanii; przy „Main Street” w USA. Zapytanie nie zwraca pożądanych wyników, chyba że jest ograniczenie lokalizacji ustawiony.
„Sieć restauracji Nowy Jork” Wiele restauracji należących do „sieciowej restauracji” w Nowym Jorku; brak adresu ulicy ani nawet nazwy ulicy.
„ul. Rybaki 10, Warszawa” lub „123 Main Street, Pleasanton PL” Tylko jedna „ulica główna” w mieście Escher w Wielkiej Brytanii; tylko jedna „ulica Główna” w amerykańskim mieście Pleasanton, Kalifornia.
„UniqueRestaurantName Warszawa” tylko jeden obiekt o takiej nazwie w Nowym Jorku; brak adresu które są niezbędne do rozróżniania.
„pizzerie w Nowym Jorku” Zapytanie zawiera ograniczenie lokalizacji i „pizzerie”. to precyzyjnie zdefiniowany typ miejsca. Zwraca ono wiele wyników.
„+1 514-670-8700”

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

Wyświetlanie listy miejsc na podstawie wyszukiwania tekstowego

Wyślij prośbę o wyszukiwanie tekstowe, dzwoniąc pod numer GMSPlacesClient searchByTextWithRequest:. zaliczając GMSPlaceSearchByTextRequest , który określa parametry żądania i metodę wywołania zwrotnego typu GMSPlaceSearchByTextResultCallback, przetwarza odpowiedź.

Obiekt GMSPlaceSearchByTextRequest określa wszystkie wymaganeopcjonalne parametry żądania. Wymagane parametry:

  • Lista pól do zwrócenia w obiekcie GMSPlace, a także nazywaną maską pola, zgodnie z definicją za pomocą funkcji 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.
  • Zapytanie tekstowe.

To przykładowe żądanie wyszukiwania tekstowego określa, że odpowiedź obiekty GMSPlace zawierają nazwę i identyfikator miejsca dla każdego obiektu GMSPlace w wyszukiwaniu wyników. Filtruje też odpowiedź tak, by zwracała 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 przedpremierowa)

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 funkcji forma GMSPlace obiekty, po 1 obiekcie GMSPlace na pasujące miejsce.

Pobieranie stanu otwartości

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 Miejsce z wymaganymi polami znajdziesz w artykule Szczegóły miejsca.
  • Opcjonalny obiekt NSDate (Obj-C) lub Date (Swift), który określa czas, jaki chcesz sprawdzić. Jeśli nie określisz czasu, domyślnie zostanie ustawiona bieżąca chwila.
  • Metoda GMSPlaceOpenStatusResponseCallback do obsługi odpowiedzi.
  • &gt;

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ść, 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 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 GMSPlaceSearchByTextRequest, aby określić wymagane dla wyszukiwania.

  • Lista pól

    Określ, które właściwości danych o miejscach mają być zwracane. Prześlij listę GMSPlace właściwości określające pola danych do zwrócenia. Jeśli pominiesz to pole żądanie zwróci błąd.

    Listy pól to dobry sposób na ich projektowanie, by uniknąć zbędnych danych, co pozwala uniknąć niepotrzebnego czasu przetwarzania opłaty rozliczeniowe.

    Podaj co najmniej 1 z tych pól:

    • Następujące pola aktywują kod SKU wyszukiwania tekstowego (tylko identyfikator):

      GMSPlacePropertyPlaceID, GMSPlacePropertyName
    • Te pola aktywują kod SKU wyszukiwania tekstowego (podstawowego):

      GMSPlacePropertyAddressComponents, GMSPlacePropertyBusinessStatus, GMSPlacePropertyFormattedAddress, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyCoordinate, GMSPlacePropertyPhotos, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyViewport, GMSPlacePropertyWheelchairAccessibleEntrance
    • Te pola aktywują kod SKU wyszukiwania tekstowego (zaawansowane):

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

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

    Ciąg tekstowy, w którym będzie przeprowadzane wyszukiwanie, na przykład: „restauracja”, „123 Główna” Street” lub „najlepsze miejsce, które warto odwiedzić w San Francisco”.

Parametry opcjonalne

Użyj obiektu GMSPlaceSearchByTextRequest, aby określić opcjonalny element dla wyszukiwania.

  • includedType

    Ogranicza wyniki do miejsc pasujących do określonego typu zdefiniowanego przez Tabela 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, zwróć wszystkie firmy bez względu na to, czy są otwarte. Miejsca, które nie określają godzin otwarcia w bazie danych Miejsc Google, zwracany, jeśli ustawisz ten parametr na false.

  • isStrictTypeFiltering

    Używany z parametrem includeType. Po ustawieniu na true, tylko miejsca pasujące do typów określonych przez Zwracane są wartości includeType. Jeśli wartością domyślną jest false (fałsz), odpowiedź domyślna może zawierać miejsca, które nie są zgodne określonych typów.

  • locationBias

    Określa obszar wyszukiwania. Ta lokalizacja działa dyskryminująco, co oznacza, że wyniki dotyczące określonej lokalizacji, w tym wyniki poza określonym obszarem.

    Możesz wybrać locationRestriction lub locationBias, ale nie w obu przypadkach. Element locationRestriction określa parametr regionu, w którym muszą się znajdować wyniki, oraz locationBias jako określenie regionu, w którym wyniki muszą znajdować się w pobliżu, ale mogą się znajdować poza regionem. w pobliżu.

    Określ region jako prostokątny widoczny lub okrągły obszar.

    • Okrąg jest wyznaczany 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 widoczny obszar o długości i szerokości szerokości geograficznej, reprezentowany przez dwa elementy. na przekątnej i na przekątnej. Niski punkt oznacza południowo-zachodni róg prostokąta, a wysoki – północno-wschodni.

      Widoczny obszar jest uważany za obszar zamknięty, co oznacza, że obejmuje jego granicę. Granice szerokości geograficznej musi mieścić się w przedziale od -90 do 90 stopni włącznie i musi mieścić się w granicach długości geograficznej musi mieścić się w zakresie od -180 do 180 stopni włącznie:

      • Jeśli low = high, widoczny obszar składa się z: ten pojedynczy punkt.
      • 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 i high.longitude = 180 stopni, widoczny obszar obejmuje wszystkie długości geograficznej.
      • Jeśli low.longitude = 180 stopni i high.longitude = -180 stopni, zakres długości geograficznej to puste.
      • Jeśli low.latitude > high.latitude, zakres szerokości geograficznej jest pusty.
  • locationRestriction

    Określa obszar wyszukiwania. Wyniki spoza określonego obszaru nie są . Wskaż region jako prostokątny widoczny obszar. Zobacz opis z 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 pobliżu którego muszą się znajdować wyniki, ale nie muszą znajdować się w tym obszarze.

  • maxResultCount

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

  • minRating

    Ogranicza wyniki tylko do tych, których średnia ocena użytkowników jest wyższa niż lub jej równy. Wartości muszą mieścić się w zakresie od 0,0 do 5,0 (włącznie) z wielokrotnością 0,5. Na przykład: 0, 0,5, 1,0, ... , 5,0 włącznie. Wartości są zaokrąglane w górę do najbliższej 0,5. Na przykład wartość 0, 6 eliminuje wszystkie wyników z oceną niższą niż 1,0.

  • priceLevels

    Ogranicz wyszukiwanie do miejsc oznaczonych na określonych poziomach cen. Domyślnie wybrane są wszystkie poziomy cen.

    Określ tablicę z co najmniej jedną wartością zdefiniowaną przez PriceLevel

    Na przykład:

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

    Określa kolejność wyników w odpowiedzi na podstawie typu wartości zapytanie:

    • W przypadku zapytania kategorialnego, np. „Restauracje w Warszawie”, Ustawienie domyślne to .relevance (ranking wyników według trafności wyszukiwania). Możesz ustawić rankPreference na .relevance lub .distance (uporządkuj wyniki według odległości).
    • W przypadku zapytań niezwiązanych z kategorią, np. „Warszawa”, zalecamy pozostawienie zasady rankPreference nieskonfigurowanej.
  • regionCode

    Kod regionu używany do formatowania odpowiedzi podany jako dwuznakową wartość kodu CLDR. Ten parametr może również powodować odchylenia w wynikach wyszukiwania. Nie ma wartości domyślnej.

    Jeśli nazwa kraju w polu adresu w odpowiedzi jest zgodna z kodu regionu, kod kraju został pominięty w adresie.

    Większość kodów CLDR jest identyczna z kodami 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.