Autouzupełnianie miejsc (nowość)

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, 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.

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, interfejs API uwzględnia odległość w postaci 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.