Usługa autouzupełniania (nowa) to interfejs API iOS, zwraca sugestie dotyczące miejsc w odpowiedzi na żądanie. W żądaniu określ ciągu tekstowego wyszukiwania i granic geograficznych, które kontrolują obszar wyszukiwania.
Usługa autouzupełniania (nowa) może być w pełni zgodna słowa i podłańcuchy danych wejściowych, rozpoznawanie nazw miejsc, adresów oraz plus . Dzięki temu aplikacje mogą wysyłać zapytania jako użytkownik i generuj sugestie dotyczące miejsc na bieżąco.
Sugestie miejsc to miejsca, takie jak firmy, adresy i punkty na podstawie podanego ciągu tekstowego i obszaru wyszukiwania.
Na przykład wywołasz interfejs API, używając jako danych wejściowych ciągu znaków zawierającego część użytkownik wpisze „Spagh”, a obszar wyszukiwania jest ograniczony do Warszawy. Odpowiedź zawiera listę sugestii miejsc pasujących do wyszukiwania. ciągu znaków i wyszukiwania, np. restauracja o nazwie „Cafe Spaghetti”, wraz z informacjami o danym miejscu.
Zwrócone sugestie miejsc są zaprojektowane tak, by zostały wyświetlone użytkownikowi, że mogą wybrać odpowiednie miejsce. Możesz dodać szczegóły miejsca (Nowość) poproś o więcej informacje o wszystkich zwróconych sugestiach miejsc.
Żądania autouzupełniania (nowe)
Utwórz żądanie autouzupełniania, wywołując metodę na stronie
GMSPlaceClient
Parametry możesz przekazywać w funkcji
GMSAutocompleteRequest
obiektu. Odpowiedź zawiera sugestie autouzupełniania w
GMSAutocompletePlaceSuggestion
obiektu.
Klucz interfejsu API i parametry query
są wymagane. Możesz też dodać
GMSAutocompleteSessionToken
kojarzyć żądania z sesją rozliczeniową
GMSAutocompleteFilter
, aby zastosować ją w wynikach.
Więcej informacji o wymaganych i opcjonalnych parametrach znajdziesz w sekcji na temat parametrów w tym dokumencie.
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. } } }];
GooglePlacesSwift
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. }
Autouzupełnianie (nowe) odpowiedzi
Autouzupełnianie zwraca tablicę zawierającą maksymalnie pięć adresów.
GMSAutocompleteSuggestion
instancja. Tablica zawiera:
placeID
types
: typy, które dotyczą tego miejsca.distanceMeters
: odległość od punktu początkowego.attributedFullText
: pełny, zrozumiały dla człowieka tekst sugestii.attributedPrimaryText
: zrozumiały dla człowieka główny tekst sugestii.attributedSecondaryText
: zrozumiały dla człowieka tekst dodatkowy sugestii.structuredFormat
: konkretna nazwa i tekst jednoznacznie identyfikujący, np. miasto lub i regionie.
Wymagane parametry
zapytanie
Ciąg tekstowy, który ma być przeszukiwany. Określ pełne słowa i podłańcuchy, miejsce imiona i nazwiska, adresy oraz kody plus. Usługa autouzupełniania (nowa) zwraca propozycje dopasowania na podstawie tego ciągu znaków i porządkuje wyniki według ich postrzeganej trafności.
Parametry opcjonalne
typy
Miejsce może mieć tylko jeden typ główny z typów Tabela
A lub Tabela
B powiązanych z tym kontem.
np. typ podstawowy to mexican_restaurant
lub steak_house
.
Domyślnie interfejs API zwraca wszystkie miejsca na podstawie parametru input
,
bez względu na główną wartość typu powiązanego z miejscem. Ogranicz wyniki
być określonego głównego typu lub głównego typu, przekazując
types
.
Użyj tego parametru, aby określić do 5 wartości typów z tabeli A lub Tabela B. Miejsce musi być takie samo jedną z określonych wartości typu podstawowego do uwzględnienia w odpowiedzi.
Żądanie zostanie odrzucone z powodu błędu INVALID_REQUEST
, jeśli:
- Określono więcej niż 5 typów.
- Wszystkie nierozpoznane typy są określone.
kraje
Uwzględnij tylko wyniki z listy określonych regionów, określonych jako tablica do 15 ccTLD („najwyższego poziomu”) domeny”). dwuznakowych. Jeśli go pominiesz, do odpowiedzi nie będą stosowane żadne ograniczenia. 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" ];
GooglePlacesSwift
let filter = AutocompleteFilter(countries: ["DE", "FR"])
Jeśli podasz zarówno locationRestriction
, jak i countries
, wyniki będą
na obszarze przecięcia obu ustawień.
inputOffset
Odsunięcie znaków Unicode od zera, które wskazuje pozycję kursora w
input
Pozycja kursora może wpływać na wyświetlane podpowiedzi. Jeśli
puste, domyślna długość to input
.
Promowanie lokalizacji lub ograniczenie związane z lokalizacją
Możesz określić locationBias
lub locationRestriction
, ale nie obie te opcje,
w obszarze wyszukiwania. locationRestriction
to coś w rodzaju regionu, w którym
wyniki muszą się znajdować w regionie, a locationBias
musi określać region, w którym
wyniki muszą znajdować się w pobliżu, ale mogą znajdować się poza tym obszarem.
locationBias
określa obszar do przeszukania. Ta lokalizacja działa jako stronniczość, co oznacza, że mogą być zwracane wyniki dotyczące określonej lokalizacji, w tym wyników spoza określonego obszaru.locationRestriction
określa obszar do przeszukania. Wyniki spoza domeny nie są zwracane określone obszary.
Określ region locationBias
lub locationRestriction
jako prostokątny
widoczny obszar lub koło.
Okrąg jest wyznaczany przez punkt środkowy i promień w metrach. Promień musi być
od 0,0 do 50 000,0 włącznie. Wartością domyślną jest 0,0. Dla:
locationRestriction
, musisz ustawić promień na wartość większą niż 0,0.
W przeciwnym razie żądanie nie zwróci ż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);
GooglePlacesSwift
let center = CLLocationCoordinate2DMake(40.477398, -74.259087) let bias = CircularCoordinateRegion(center: center, radius: 1000.0) let filter = AutocompleteFilter(coordinateRegionBias: bias)
Prostokąt to widoczny obszar o długości i szerokości geograficznej, przedstawiony jako dwa po przekątnej
naprzeciwko low
i high
punktów. Widoczny obszar jest uważany za zamknięty,
co oznacza, że obejmuje jego granicę. Granice szerokości geograficznej muszą się mieścić w zakresie od -90 do
90 stopni włącznie, a granice długości geograficznej muszą się mieścić w przedziale od -180 do 180
stopnie włącznie:
- 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 ( przecina linię długości geograficznej 180 stopni). - Jeśli
low.longitude
= –180 stopni, ahigh.longitude
= 180 stopni, widoczny obszar obejmuje wszystkie długości geograficzne. - Jeśli
low.longitude
= 180 stopni, ahigh.longitude
= –180 stopni, zakres długości geograficznej jest pusty.
Musisz wypełnić zarówno pole low
, jak i high
, a reprezentowane pole nie może być
puste. Gdy to zrobisz, pojawi się błąd.
Na przykład ten widoczny obszar w całości obejmuje 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);
GooglePlacesSwift
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 zostać obliczona bezpośrednia odległość do
miejsce docelowe (zwrócone jako distanceMeters
). Jeśli pominiesz tę wartość,
odległość w linii prostej nie zostanie zwrócona. Należy podać szerokość i
długość geograficzna:
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];
GooglePlacesSwift
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
regionCode
Kod regionu używany do formatowania odpowiedzi określony jako ccTLD („najwyższego poziomu”) domeny”). dwuznakową. Większość kodów ccTLD jest taka sama jak kody ISO 3166-1, kilka istotnych wyjątków. Na przykład domena ccTLD Wielkiej Brytanii to „uk”. (co.uk), natomiast kod ISO 3166-1 to „gb”. (technicznie dla podmiotu „ Wielkiej Brytanii i Irlandii Północnej”).
Jeśli podasz nieprawidłowy kod regionu, interfejs API zwróci błąd INVALID_ARGUMENT
. Ten parametr może wpływać na wyniki w zależności od obowiązującego prawa.
sessionToken
Tokeny sesji to generowane przez użytkownika ciągi tekstowe, które śledzą Autouzupełnianie (nowych) połączeń jako „sesji”. Autouzupełnianie (nowość) korzysta z tokenów sesji do grupowania fazy zapytania i wyboru wyszukiwania autouzupełniania przez użytkownika w pojedynczą sesję do celów rozliczeniowych. Więcej informacji można znaleźć w sekcji Sesja tokeny.
Przykłady autouzupełniania (nowe)
Używanie ograniczeń lokalizacji i uprzedzeń według lokalizacji
Autouzupełnianie (nowość) domyślnie używa promowania ze względu na adres IP do:
kontrolować obszar wyszukiwania. W przypadku promowania ze względu na adres IP interfejs API używa adresu IP
urządzenia, aby wpływać na wyniki. Możesz opcjonalnie użyć locationRestriction
lub
locationBias
, ale nie obu,
obszar wyszukiwania.
Ograniczenie lokalizacji określa obszar wyszukiwania. Wyniki poza określonymi nie są zwracane. W przykładzie poniżej użyto ograniczenia lokalizacji Żądanie do kołowego ograniczenia lokalizacji z wyśrodkowanym promieniem 5000 m. w San Francisco:
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. } } }];
GooglePlacesSwift
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 uprzedzeń związanych z lokalizacją lokalizacja jest wynikiem błędu może zostać zwrócona określona lokalizacja, w tym wyniki spoza określonego zakresu w pobliżu. W następnym przykładzie zmieniamy poprzednie żądanie tak, by używało uprzedzeń związanych z lokalizacją:
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. } } }];
GooglePlacesSwift
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
Aby ograniczyć wyniki żądania, do określonego typu typ zgodnie z opisem w tabeli A i Tabela B. Możesz podać tablicę z maksymalnie 5 wartościami. Jeśli nazwa zostanie pominięta, zwracane są wszystkie typy.
Poniższy przykład określa ciąg zapytania „Piłka nożna”. i używa typów
parametr do ograniczania wyników do instytucji danego 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. } } }];
GooglePlacesSwift
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
Jeśli umieścisz w żądaniu parametr origin
określony jako
szerokości i długości geograficznej, API uwzględnia odległość w linii prostej
z miejsca wylotu do miejsca docelowego w odpowiedzi. Odpowiedź zwraca
odległość jako distanceMeters
.
W tym przykładzie punkt początkowy jest ustawiony na 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. } } }];
GooglePlacesSwift
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
Z autouzupełniania (nowego) możesz korzystać nawet bez mapę. Jeśli jest wyświetlana mapa, musi to być mapa Google. W przypadku wyświetlania sugestie z usługi autouzupełniania (nowe) bez mapy, w tekście wyszukiwania należy umieścić logo Google pola/wyników. Więcej informacji znajdziesz w sekcji Wyświetlanie logo Google oraz atrybucje.