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.
„Restauracja sieciowa Warszawa” Wiele miejsc „Restauracja sieciowa” lokalizacje w Nowym Jorku; brak adresu lub nawet nazwę 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 Warszawie” Zapytanie zawiera ograniczenie lokalizacji i „pizzerie”. to precyzyjnie zdefiniowany typ miejsca. Zwraca wiele wyników.
„+1 514-670-8700”

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

Uzyskaj listę miejsc za pomocą 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 wartości wymagane i opcjonalne parametry; w związku z danym żądaniem. Wymagane parametry to:

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

GooglePlacesSwift

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.

Oprócz pól danych obiekt GMSPlace w tabeli , która zawiera następujące funkcje składowe:

  • isOpen określa, czy dane miejsce jest w danym momencie otwarte.
  • isOpenAtDate określa, czy dane miejsce jest otwarte w danym dniu.

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.

    Wypełnij co najmniej jedno 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 aktywują kod SKU wyszukiwania tekstowego (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, zwróć tylko te miejsca, które są otwarte w momencie wysył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żywana 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. Najniższy punkt wskazuje południowy zachód róg prostokąta, a najwyższy punkt reprezentuje północny wschód w prawym górnym rogu prostokąta.

      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 180 stopni linii długości geograficznej).
      • 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 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.

  • 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) przyrosty co 0,5. Na przykład: 0, 0,5, 1,0, ... , 5,0 włącznie. Wartości to 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 (ranking wyników 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.