Usługa Autocomplete (New) to interfejs API na iOS, który zwraca sugestie miejsc w odpowiedzi na żądanie. W prośbie podaj tekstowy ciąg wyszukiwania i granice geograficzne, które określają obszar wyszukiwania.
Usługa Autouzupełnianie (nowa) może dopasowywać pełne słowa i podciągi znaków w danych wejściowych, rozwiązując nazwy miejsc, adresy i kody kreskowe. Aplikacje mogą więc wysyłać zapytania w imieniu użytkownika, aby wyświetlać sugestie miejsc na bieżąco.
Sugestia lokalizacji to miejsca, takie jak firmy, adresy i miejsca docelowe, na podstawie określonego ciągu tekstowego i obszaru wyszukiwania.
Na przykład wywołujesz interfejs API, podając jako dane wejściowe ciąg znaków zawierający częściowe dane wejściowe użytkownika „Spagh”, a obszar wyszukiwania ograniczony do Nowego Jorku. Odpowiedź zawiera listę sugestii miejsc pasujących do ciągu znaków i obszaru wyszukiwania, np. restaurację o nazwie „Cafe Spaghetti” wraz ze szczegółami.
Zwrócone sugestie dotyczące miejsc są przeznaczone do wyświetlania użytkownikowi, aby mógł wybrać odpowiednie miejsce. Aby uzyskać więcej informacji o dowolnej z zaproponowanych lokalizacji, możesz wysłać żądanie Szczegóły miejsca (nowe).
.Prośby o autouzupełnianie (nowe)
Aby utworzyć żądanie autouzupełniania, wywołaj metodę w GMSPlaceClient
.
Parametry możesz przekazywać w obiekcie GMSAutocompleteRequest
. Odpowiedź zawiera propozycje autouzupełniania w obiekcie GMSAutocompletePlaceSuggestion
.
Parametry klucza interfejsu API i query
są wymagane. Możesz też użyć parametru GMSAutocompleteSessionToken
, aby powiązać żądania z sesją rozliczeniową, oraz parametru GMSAutocompleteFilter
, aby zastosować je do wyników.
Więcej informacji o parametrach wymaganych i opcjonalnych znajdziesz w sekcji dotyczącej parametrów tego dokumentu.
Swift
let token = GMSAutocompleteSessionToken() let northWestBounds = CLLocationCoordinate2DMake(40.921628, -73.700051) let southEastBounds = CLLocationCoordinate2DMake(40.477398, -74.259087) let filter = GMSAutocompleteFilter() filter.types = [kGMSPlaceTypeRestaurant] filter.locationBias = GMSPlaceRectangularLocationOption(northWestBounds, southEastBounds) let request = GMSAutocompleteRequest(query:"Spagh") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(37.388162, -122.088137); CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(37.395804, -122.077023); GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.types = @[ kGMSPlaceTypeRestaurant ]; filter.locationBias = GMSPlaceRectangularLocationOption(northEast, southWest); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
Pakiet SDK Miejsc Swift na iOS (wersja podglądowa)
let center = (37.3913916, -122.0879074) let northEast = (37.388162, -122.088137) let southWest = (37.395804, -122.077023) let bias = RectangularCoordinateRegion(northEast: northEast, southWest: southWest) let filter = AutocompleteFilter(types: [ .restaurant ], origin: center, coordinateRegionBias: bias) let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): // Handle suggestions. case .failure(let placesError): // Handle error. }
odpowiedzi autouzupełniania (nowe),
Autouzupełnianie zwraca tablicę zawierającą do 5 wartości GMSAutocompleteSuggestion
. Tablica zawiera:
placeID
types
: typy, które dotyczą tego miejsca.distanceMeters
: odległość od punktu początkowego.attributedFullText
: pełny tekst sugestii w formie zrozumiałej dla człowieka.attributedPrimaryText
: czytelny dla użytkownika tekst główny propozycji.attributedSecondaryText
: tekst dodatkowy w propozycji, który jest zrozumiały dla człowieka.structuredFormat
: nazwa i tekst wyjaśniający, np. miasto lub region.
Wymagane parametry
zapytanie
ciąg tekstowy, w którym ma być przeprowadzone wyszukiwanie; Określ pełne słowa i podciągi znaków, nazwy miejsc, adresy i kod pocztowy. Usługa Autouzupełnianie (nowa) zwraca dopasowania na podstawie tego ciągu znaków i porządkuje wyniki według ich przewidywanej trafności.
Parametry opcjonalne
typy
Miejsce może mieć tylko jeden podstawowy typ z typów Tabela A lub Tabela B powiązanych z nim.
Na przykład typ podstawowy może być mexican_restaurant
lub steak_house
.
Domyślnie interfejs API zwraca wszystkie miejsca na podstawie parametru input
, niezależnie od wartości głównego typu powiązanego z miejscem. Ogranicz wyniki do określonego typu głównego lub typów głównych, podając parametr types
.
Użyj tego parametru, aby określić maksymalnie 5 wartości typu z tabeli A lub tabeli B. Aby miejsce zostało uwzględnione w odpowiedzi, musi ono odpowiadać jednej z podanych wartości typu podstawowego.
Prośba jest odrzucana z błędem INVALID_REQUEST
, jeśli:
- Określono więcej niż 5 typów.
- Wszelkie nierozpoznane typy są określane.
kraje
Uwzględniaj tylko wyniki z listy określonych regionów, podanych jako tablica do 15 2-znakowych wartości domeny najwyższego poziomu (TLD). Jeśli to pole zostanie pominięte, nie zostaną zastosowane żadne ograniczenia odpowiedzi. Aby na przykład ograniczyć regiony do Niemiec i Francji:
Swift
let filter = GMSAutocompleteFilter() filter.countries = ["DE", "FR"]
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.countries = @[ @"DE", @"FR" ];
Pakiet SDK Miejsc Swift na iOS (wersja podglądowa)
let filter = AutocompleteFilter(countries: ["DE", "FR"])
Jeśli podasz zarówno parametr locationRestriction
, jak i countries
, wyniki będą znajdować się w obszarze przecięcia tych 2 ustawień.
inputOffset
Odsunięcie znaku Unicode liczone od zera, które wskazuje pozycję kursora w elementach input
. Pozycja kursora może wpływać na wyniki przewidywania. Jeśli jest pusty, jego domyślna długość to input
.
locationBias lub locationRestriction
Aby określić obszar wyszukiwania, możesz podać kolumnę locationBias
lub locationRestriction
(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ć też poza tym obszarem.
locationBias
określa obszar wyszukiwania. Ta lokalizacja służy jako preferencja, co oznacza, że mogą być zwracane wyniki z okolic określonej lokalizacji, w tym poza określonym obszarem.locationRestriction
określa obszar wyszukiwania. Wyniki spoza wskazanego obszaru nie są zwracane.
Określ region locationBias
lub locationRestriction
jako prostokątny widok w oknie lub jako okrąg.
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. Wartość domyślna to 0,0. W przypadku locationRestriction
musisz ustawić promień na wartość większą niż 0, 0.
W przeciwnym razie prośba nie zwraca żadnych wyników.
Na przykład:
Swift
let center = CLLocationCoordinate2DMake(40.730610, -73.935242) let radius = 1000.0 filter.locationBias = GMSPlaceCircularLocationOption(center, radius)
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(40.730610, -73.935242); radius = 1000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceCircularLocationOption(center, radius);
Pakiet SDK Miejsc Swift na iOS (wersja podglądowa)
let center = CLLocationCoordinate2DMake(40.477398, -74.259087) let bias = CircularCoordinateRegion(center: center, radius: 1000.0) let filter = AutocompleteFilter(coordinateRegionBias: bias)
Prostokąt to widok z uwzględnieniem współrzędnych geograficznych, reprezentowany przez 2 punkty low
i high
naprzeciw siebie na przekątnej. Widok w oknie przeglądarki jest uważany za zamknięty obszar, co oznacza, że obejmuje on swoją granicę. Granice szerokości geograficznej muszą mieścić się w zakresie od -90 do 90 stopni, a granice długości geograficznej – od -180 do 180 stopni:
- Jeśli
low
=high
, obszar widoczny składa się z jednego punktu. - Jeśli
low.longitude
>high.longitude
, zakres długości geograficznej jest odwrócony (widok przetnie linię długości geograficznej 180°). - Jeśli
low.longitude
= -180 stopni, ahigh.longitude
= 180 stopni, widok obejmuje wszystkie długości geograficzne. - Jeśli
low.longitude
= 180 stopni, ahigh.longitude
= -180 stopni, zakres długości geograficznej jest pusty.
Wartości low
i high
muszą być wypełnione, a pole nie może być puste. Pusta wizjer prowadzi do błędu.
Na przykład ten widok w oknie przeglądarki obejmuje w pełni Nowy Jork:
Swift
let high = CLLocationCoordinate2DMake(40.921628, -73.700051) let low = CLLocationCoordinate2DMake(40.477398, -74.259087) let filter = GMSAutocompleteFilter() filter.locationBias = GMSPlaceRectangularLocationOption(high, low)
Objective-C
CLLocationCoordinate2D high = CLLocationCoordinate2DMake(40.477398, -74.259087); CLLocationCoordinate2D low = CLLocationCoordinate2DMake(440.921628, -73.700051); GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceRectangularLocationOption(high, low);
Pakiet SDK Miejsc Swift na iOS (wersja podglądowa)
let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087) let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051) let filter = AutocompleteFilter(coordinateRegionBias: bias)
pochodzenie
Punkt początkowy, z którego ma być obliczana odległość w linii prostej do punktu docelowego (zwracana jako distanceMeters
). Jeśli ta wartość zostanie pominięta, odległość w linii prostej nie zostanie zwrócona. Należy je podać jako współrzędne geograficzne:
Swift
let filter = GMSAutocompleteFilter() filter.origin = CLLocation(latitude: 37.395804, longitude: -122.077023)
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude: -122.077023];
Pakiet SDK Miejsc Swift na iOS (wersja podglądowa)
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
regionCode
Kod regionu użyty do sformatowania odpowiedzi, podany jako ccTLD („top-level domain”)wartość dwuznakowa. Większość kodów ccTLD jest identyczna z kodami ISO 3166-1, z kilkoma wyjątkami. Na przykład w przypadku Wielkiej Brytanii ccTLD to „uk” (.co.uk), a kod ISO 3166-1 to „gb” (technicznie dla podmiotu „Wielka Brytania i Irlandia Północna”).
Jeśli podasz nieprawidłowy kod regionu, interfejs API zwróci błąd INVALID_ARGUMENT
. Parametr może wpływać na wyniki w zależności od obowiązujących przepisów.
sessionToken
Tokeny sesji to tworzone przez użytkownika ciągi znaków, które śledzą wywołania funkcji Autouzupełnianie (nowa) jako „sesje”. Funkcja Autouzupełnianie (nowa) używa tokenów sesji, aby grupować fazy zapytania i wyboru w ramach wyszukiwania z automatycznym uzupełnianiem w oddzielną sesję na potrzeby rozliczeń. Więcej informacji znajdziesz w artykule Tokeny sesji.
Przykłady autouzupełniania (nowa wersja)
Używanie atrybutów locationRestriction i locationBias
Autouzupełnianie (nowa wersja) domyślnie używa ukierunkowania adresu IP do kontrolowania obszaru wyszukiwania. W przypadku użycia ukierunkowania na adres IP interfejs API używa adresu IP urządzenia, aby ukierunkować wyniki. Aby określić obszar wyszukiwania, możesz opcjonalnie użyć właściwości locationRestriction
lub locationBias
(ale nie obu).
Ograniczenie dotyczące lokalizacji określa obszar wyszukiwania. Wyniki spoza określonego obszaru nie są zwracane. W tym przykładzie używamy ograniczenia dotyczącego lokalizacji, aby ograniczyć żądanie do koła o promieniu 5000 metrów z San Francisco jako środkiem:
Swift
let token = GMSAutocompleteSessionToken() let center = CLLocationCoordinate2DMake(37.775061, -122.419400) let radius = 5000.0 let filter = GMSAutocompleteFilter() filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius) let request = GMSAutocompleteRequest(query:"Piz") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400); radius = 5000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
Pakiet SDK Miejsc Swift na iOS (wersja podglądowa)
let center = (37.775061, -122.419400) let radius = 5000.0 let restriction = CircularCoordinateRegion(center: center, radius: radius) let filter = AutocompleteFilter(coordinateRegionRestriction: restriction) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
W przypadku lokalizacji jako czynnika kierunkowego lokalizacja służy jako czynnik kierunkowy, co oznacza, że wyniki mogą być zwracane w pobliżu określonej lokalizacji, w tym poza nią. W następnym przykładzie zmieniamy poprzednie zapytanie, aby wykorzystać uczenie z uwzględnieniem lokalizacji:
Swift
let token = GMSAutocompleteSessionToken() let center = CLLocationCoordinate2DMake(37.775061, -122.419400) let radius = 5000.0 let filter = GMSAutocompleteFilter() filter.locationBias = GMSPlaceCircularLocationOption(center, radius) let request = GMSAutocompleteRequest(query:"Piz") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400); radius = 5000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceCircularLocationOption(center, radius); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
Pakiet SDK Miejsc Swift na iOS (wersja podglądowa)
let center = (37.775061, -122.419400) let radius = 5000.0 let bias = CircularCoordinateRegion(center: center, radius: radius) let filter = AutocompleteFilter(coordinateRegionBias: bias) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
Typy użycia
Parametr types służy do ograniczania wyników odpowiedzi do określonego typu, jak podano w tabeli A i tabeli B. Możesz podać tablicę zawierającą maksymalnie 5 wartości. Jeśli pominiesz ten parametr, zwrócone zostaną wszystkie typy.
W tym przykładzie łańcuch zapytań to „Soccer”, a parametry types służy do ograniczenia wyników do obiektów typu "sporting_goods_store"
:
Swift
let token = GMSAutocompleteSessionToken() let filter = GMSAutocompleteFilter() filter.types = ["sporting_goods_store"] let request = GMSAutocompleteRequest(query:"Soccer") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.types = @[ "sporting_goods_store" ]; GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Soccer"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
Pakiet SDK Miejsc Swift na iOS (wersja podglądowa)
let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ]) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Soccer", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
Użyj punktu początkowego
Gdy w żądaniu uwzględnisz parametr origin
podany jako współrzędne szerokości i długości geograficznej, interfejs API uwzględni w odpowiedzi odległość w linii prostej od punktu początkowego do docelowego. Odpowiedź zwraca odległość jako distanceMeters
.
W tym przykładzie punkt początkowy znajduje się w centrum San Francisco:
Swift
let token = GMSAutocompleteSessionToken() let origin = CLLocation(latitude: 37.7749, longitude: -122.4194) let filter = GMSAutocompleteFilter() filter.origin = origin let request = GMSAutocompleteRequest(query:"Amoeba") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText)) and distance: \(String(describing: result.placeSuggestion?.distanceMeters))") } } })
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude:-122.077023]; GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Amoeba"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
Pakiet SDK Miejsc Swift na iOS (wersja podglądowa)
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.7749, longitude: -122.4194)) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Amoeba", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
Atrybucje
Możesz korzystać z Autouzupełniania (Nowy) nawet bez mapy. Jeśli chcesz wyświetlić mapę, musi to być mapa Google. Jeśli wyświetlasz sugestie z usługi Autouzupełnianie (Nowa) bez mapy, musisz uwzględnić logo Google wyświetlane w polu wyszukiwania lub w wynikach. Więcej informacji znajdziesz w artykule Wyświetlanie logo i tekstu atrybucji Google.