Otomatik Tamamlama (Yeni) hizmeti, bir isteğe yanıt olarak yer önerileri döndürür. İstekte bir metin arama dizesi ve arama alanını kontrol eden coğrafi sınırlar
Otomatik tamamlama (Yeni) hizmeti tam modda eşleşebilir girişin kelimeleri ve alt dizeleri, yer adlarını, adresleri ve artı ekleyebilirsiniz. Bu nedenle uygulamalar, anlık yer önerileri sunmak için kullanılır.
Yer önerileri; işletmeler, adresler ve birbirine ait konumlar gibi yerlerdir ilgi alanı (belirtilen giriş metni dizesine ve arama alanına göre)
Örneğin, giriş olarak kısmi bir Arama alanı İstanbul ile sınırlı olmak üzere, "Spagh" adlı kullanıcı girişi. Yanıtta, aramayla eşleşen yer önerilerinin bir listesi yer alır. "Kafe Spagetti" adlı restoran gibi bir dize ve arama alanını, bilgileri takip edebilirsiniz.
Döndürülen yer önerileri, kullanıcıya sunulabilecek şekilde tasarlanmıştır. istedikleri yeri seçebilmelerini sağlar. Bir Yer Ayrıntıları oluşturabilirsiniz (Yeni) daha fazla almak için istek gönderin yer önerilerinden herhangi biri hakkında bilgi verir.
Otomatik tamamlama (Yeni) istekleri
GMSPlaceClient
.
Parametreleri
GMSAutocompleteRequest
nesnesini tanımlayın. Yanıt, otomatik tamamlama önerilerini
GMSAutocompletePlaceSuggestion
nesnesini tanımlayın.
API anahtarı ve query
parametreleri gereklidir. Şunları da ekleyebilirsiniz:
GMSAutocompleteSessionToken
faturalandırma oturumuyla ilişkilendirmek için
GMSAutocompleteFilter
sonuçlara uygulamak için kullanılır.
Gerekli ve isteğe bağlı parametreler hakkında daha fazla bilgi için bu belgenin parametreler bölümüne bakın.
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. }
Otomatik tamamlama (Yeni) yanıtları
Otomatik tamamlama, en fazla beşlik bir dizi döndürür
GMSAutocompleteSuggestion
örnek. Dizi şunları içerir:
placeID
types
: Bu yer için geçerli olan türler.distanceMeters
: Kalkış noktasından uzaklık.attributedFullText
: Bir önerinin kullanıcılar tarafından okunabilen tam metni.attributedPrimaryText
: Bir önerinin kullanıcılar tarafından okunabilen birincil metni.attributedSecondaryText
: Bir önerinin kullanıcılar tarafından okunabilen ikincil metni.structuredFormat
: Belirli bir ad ve belirsizleştirme yapan metin (ör. şehir veya bölgesi.
Gerekli parametreler
sorgu
Arama yapılacak metin dizesi. Tam kelimeleri ve alt dizeleri belirtin, yeri adları, adresleri ve artı kodlarını kullanın. İlgili içeriği oluşturmak için kullanılan Otomatik tamamlama (Yeni) hizmeti aday eşleşmelerini döndürür alaka düzeyine göre sıralar.
İsteğe bağlı parametreler
türler
Bir yerin yalnızca tek bir birincil türü şu türlerden olabilir:Tablo
A veya Tablo
B ile ilişkilendirilmelidir.
Örneğin, birincil tür mexican_restaurant
veya steak_house
olabilir.
Varsayılan olarak API, input
parametresine göre tüm yerleri döndürür.
. Sonuçları kısıtla
geçirerek belirli bir birincil tür veya birincil türde olmasını
types
parametresinden yararlanın.
Tablodan en fazla beş tür değeri belirtmek için bu parametreyi kullanın A veya Tablo B. Yer, eşleşmelidir yanıta dahil edilecek, belirtilen birincil tür değerlerinden biri olmalıdır.
Aşağıdaki durumlarda istek INVALID_REQUEST
hatasıyla reddedilir:
- Beşten fazla tür belirtilmiş.
- Tanınmayan türler belirtilmiş.
ülkeler
Yalnızca, dizi olarak belirtilen, belirtilen bölgeler listesinden sonuçları dahil et 15 ccTLD ("üst düzey) alan adı") iki karakterli değerler sunmalıdır. Atlanırsa yanıta herhangi bir kısıtlama uygulanmaz. Örneğin, bölgeleri Almanya ve Fransa ile sınırlamak için:
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"])
Hem locationRestriction
hem de countries
belirtirseniz sonuçlar şu şekilde olur:
iki ayarın kesişim alanında yer alır.
inputOffset
İmlecin konumunu gösteren sıfır tabanlı Unicode karakter ofseti
input
İmleç konumu, hangi tahminlerin döndürüleceğini etkileyebilir. Eğer
boşsa varsayılan olarak input
uzunluğunda olur.
Konum ön yargıları veya konum Kısıtlaması
tanımlamak için locationBias
veya locationRestriction
belirtebilirsiniz ancak ikisini birden belirtemezsiniz
alanı seçin. locationRestriction
, bir hedefin etkin olduğu bölgeyi
sonuçlar, içinde yer almalı ve locationBias
olarak belirtmek üzere
sonuçlar yakınında olmalıdır ancak bölgenin dışında olabilir.
locationBias
, aranacak bir alan belirtiyor. Bu konum önyargı işlevi görür Bu, aşağıdakiler de dahil olmak üzere, belirtilen konumun çevresindeki sonuçların döndürülebileceği anlamına gelir: belirtilen alanın dışındaki sonuçları döndürür.locationRestriction
, aranacak bir alan belirtiyor. dışındaki sonuçlar belirtilen alan döndürülmez.
locationBias
veya locationRestriction
bölgesini dikdörtgen olarak belirtin
veya daire olarak kullanabilirsiniz.
Bir daire, merkez noktası ve metre cinsinden yarıçapıyla tanımlanır. Yarıçap şöyle olmalıdır:
0,0 ve 50.000,0 (her iki değer dahil) arasında bir değerdir. Varsayılan değer 0,0'dır. Örneğin,
locationRestriction
yarıçapı 0, 0'dan büyük bir değere ayarlamanız gerekir.
Aksi takdirde, istek hiçbir sonuç döndürmez.
Örneğin:
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)
Dikdörtgen, iki köşegen olarak gösterilen enlem-boylam görünümüdür
karşısında low
ve high
puan. Görüntü alanı, kapalı bir bölge olarak kabul edilir.
yani sınırlarını içerir. Enlem sınırları -90 ile arasında olmalıdır
90 derece dahil olmak üzere boylam sınırları ise -180 ile 180 aralığında olmalıdır
derece (bu değerler dahil):
low
=high
olursa, görüntü alanı bu tek noktadan oluşur.- Eğer
low.longitude
>high.longitude
ise boylam aralığı tersine çevrilir ( 180 derecelik boylam çizgisini geçer). low.longitude
= -180 derece vehigh.longitude
= 180 derece ise görüntü alanı tüm boylamları içerir.low.longitude
= 180 derece vehigh.longitude
= -180 derece ise boylam aralığı boş.
Hem low
hem de high
doldurulmalıdır, temsil edilen kutu kullanılamaz
boştur. Boş görüntü alanı hatayla sonuçlanır.
Örneğin, bu görüntü alanı New York City'yi tamamen kapsar:
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)
kaynak
Hedefe olan düz çizgi uzaklığının hesaplanacağı başlangıç noktası
hedef (distanceMeters
olarak döndürülür). Bu değer atlanırsa
düz çizgi mesafesi döndürülmez. Enlem ve
boylam koordinatları:
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
Yanıtı biçimlendirmek için kullanılan bölge kodu, ccTLD ("üst düzey alan adı") iki karakterlik değer. Çoğu ccTLD kodu, ISO 3166-1 kodlarıyla aynıdır; ancak bazı önemli istisnaları var. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" olur (.co.uk), ISO 3166-1 kodu "gb" ise (teknik olarak " Büyük Britanya ve Kuzey İrlanda Birleşik Krallık'ı").
Geçersiz bir bölge kodu belirtirseniz API bir INVALID_ARGUMENT
döndürür.
hatası. Parametre, geçerli yasalara göre sonuçları etkileyebilir.
sessionToken
Oturum jetonları, etkinlikleri izleyen kullanıcı tarafından oluşturulmuş Aramaları "oturumlar" olarak otomatik tamamlama (yeni). Otomatik Tamamlama (Yeni), kullanıcının otomatik tamamlama aramasının sorgu ve seçim aşamalarını tek bir oturumda tamamlama . Daha fazla bilgi için bkz. Oturum jetonlar.
Otomatik tamamlama (Yeni) örnekleri
Konum kısıtlaması ve konum önerileri kullan
Otomatik Tamamlama (Yeni) özelliği varsayılan olarak IP ağırlıklandırmayı kullanır:
Arama alanını kontrol edebilir. IP'ye ağırlık vermede API,
cihazdaki değerleri doğru şekilde
ayırın. İsteğe bağlı olarak, locationRestriction
veya
belirtmek için locationBias
(ikisi birden değil)
alan adını tıklayın.
Konum kısıtlaması, aranacak alanı belirtir. Belirtilen dışındaki sonuçlar alanı döndürülmez. Aşağıdaki örnekte, kullanıcıları merkezde 5.000 metre yarıçaplı dairesel bir yer kısıtlamasına yönelik istek daha fazla bilgi edindiniz:
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:^(NSArrayG<MSAutocompleteSuggestion * >* 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. }
Konum ön yargısında, konum bir yanlılık işlevi görür ve bu da belirtilen konumun dışındaki sonuçlar da dahil olmak üzere, belirtilen konum döndürülebilir. alanı. Sonraki örnek, konum yanlılığını kullanmak için önceki isteği değiştirir:
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. }
Kullanım türleri
Bir isteğin sonuçlarını belirli bir sayıyla sınırlamak için type (türler) parametresini kullanın aşağıdaki gibi yazın: Tablo A ve Tablo B. Hedeflerinize göre bir en fazla beş değer dizisidir. Atlanırsa tüm türler döndürülür.
Aşağıdaki örnekte "Futbol" sorgu dizesi belirtiliyor ve Yeşil Ofis’te
parametresini kullanarak sonuçları
"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. }
Kaynağı kullan
İsteğe origin
parametresini eklediğinizde,
enlem ve boylam koordinatlarıyla birlikte API,
başlangıç noktasından
hedefe doğru olmalıdır. Yanıt,
distanceMeters
olarak mesafe.
Bu örnekte başlangıç noktası San Francisco'nun merkezi olarak ayarlanmaktadır:
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:^(NSArrayG<MSAutocompleteSuggestion * >* 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. }
İlişkilendirmeler
Otomatik tamamlama (Yeni) özelliğini bir haritadır. Harita gösterecekseniz bu bir Google haritası olmalıdır. Gösterdiğinizde Otomatik tamamlama (Yeni) hizmetinden öneriler harita olmadan, arama sonuçlarında satır içi olarak görüntülenen Google logosunu alanı/sonuçları. Daha fazla bilgi için bkz. Google logosunu görüntüleme ve ilişkilendirmeleri.