Otomatik Tamamlama (Yeni) hizmeti, bir isteğe yanıt olarak yer önerileri döndüren bir iOS API'sidir. İstekte, arama alanını kontrol eden bir metin arama dizesi ve coğrafi sınırlar belirtin.
Otomatik Tamamlama (Yeni) hizmeti, yer adlarını, adresleri ve artı kodlarını çözerek girişin tam kelimelerini ve alt dizelerini eşleştirebilir. Bu nedenle uygulamalar, kullanıcı yazarken anında yer önerileri sunmak için sorgu gönderebilir.
Yer önerileri, belirtilen giriş metin dizesine ve arama alanına göre işletme, adres ve önemli yerler gibi yerlerdir.
Örneğin, API'yi çağırırken giriş olarak kısmi bir kullanıcı girişi olan "Spagh" ifadesini kullanırsınız. Arama alanı New York ile sınırlıdır. Ardından yanıtta, arama dizesi ve arama alanıyla eşleşen yer önerilerinin listesi (ör. "Cafe Spaghetti" adlı restoran) ve yerle ilgili ayrıntılar yer alır.
Döndürülen yer önerileri, kullanıcının istediği yeri seçebilmesi için kullanıcıya sunulacak şekilde tasarlanmıştır. Döndürülen yer önerilerinden herhangi biri hakkında daha fazla bilgi edinmek için Yer Ayrıntıları (Yeni) isteği gönderebilirsiniz.
Otomatik Tamamlama (Yeni) işlevini uygulamanıza iki temel şekilde entegre edebilirsiniz:
- Yer tahminlerini programatik olarak alma: Tahminleri almak ve özel bir kullanıcı arayüzünde görüntülemek için API'yi doğrudan çağırın.
- Yer Otomatik Tamamlama widget'ını ekleyin: Kullanıcı yazarken tahminleri gösteren, hazır bir arama otomatik tamamlama deneyimi sunar.
Yer tahminlerini programatik olarak alma
Otomatik Tamamlama (Yeni) istekleri
GMSPlacesClient
üzerinde bir yöntem çağırarak otomatik tamamlama isteği oluşturun.
GMSAutocompleteRequest
nesnesine parametre gönderebilirsiniz. Yanıt, bir GMSAutocompletePlaceSuggestion
nesnesi içinde otomatik tamamlama önerileri sağlar.
API anahtarı ve query
parametreleri gereklidir. İstekleri bir faturalandırma oturumuyla ilişkilendirmek için GMSAutocompleteSessionToken
ve sonuçları uygulamak için GMSAutocompleteFilter
parametrelerini de ekleyebilirsiniz.
Places Swift SDK sürümü
PlacesClient
üzerinde bir yöntem çağırarak otomatik tamamlama isteği oluşturun.
AutocompleteRequest
nesnesine parametre gönderebilirsiniz. Yanıt, bir AutocompletePlaceSuggestion
nesnesi içinde otomatik tamamlama önerileri sağlar.
API anahtarı ve query
parametreleri gereklidir. İstekleri bir faturalandırma oturumuyla ilişkilendirmek için AutocompleteSessionToken
ve sonuçları uygulamak için AutocompleteFilter
parametrelerini de ekleyebilirsiniz.
Zorunlu ve isteğe bağlı parametreler hakkında daha fazla bilgi için bu dokümanın parametreler bölümüne bakın.
Yerler Swift SDK'sı
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. }
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. } } }];
Otomatik tamamlama (Yeni) yanıtları
Otomatik tamamlama, beş adede kadar GMSAutocompleteSuggestion
örneği içeren bir dizi döndürür. Dizi şunları içerir:
placeID
types
: Bu yer için geçerli olan türler.distanceMeters
: Başlangıç noktasından uzaklık.attributedFullText
: Kullanıcı tarafından okunabilen öneri metninin tamamı.attributedPrimaryText
: Bir önerinin kullanıcı tarafından okunabilen birincil metni.attributedSecondaryText
: Bir önerinin, kullanıcılar tarafından okunabilen ikincil metni.structuredFormat
: Belirli ad ve anlam karışıklığını gideren metin (ör. şehir veya bölge).
Gerekli parametreler
sorgu
Aramanın yapılacağı metin dizesi. Tam kelimeleri ve alt dizeleri, yer adlarını, adresleri ve artı kodlarını belirtin. Otomatik Tamamlama (Yeni) hizmeti, bu dizeye göre olası eşleşmeleri döndürür ve sonuçları algılanan alaka düzeylerine göre sıralar.
İsteğe bağlı parametreler
sessionToken
Oturum jetonları, Otomatik Tamamlama (Yeni) aramalarını (widget üzerinden yapılan aramalar ve programatik aramalar dahil) "oturumlar" olarak izleyen, kullanıcı tarafından oluşturulan dizelerdir. Otomatik Tamamlama (Yeni), kullanıcı otomatik tamamlama aramasının sorgu ve seçim aşamalarını faturalandırma amacıyla ayrı bir oturumda gruplandırmak için oturum jetonlarını kullanır. Daha fazla bilgi için Oturum jetonları başlıklı makaleyi inceleyin.
İsteğe bağlı AutocompleteFilter parametreleri
türler
Bir yerin yalnızca Tablo A veya Tablo B türlerinden tek bir birincil türü olabilir.
Örneğin, birincil tür mexican_restaurant
veya steak_house
olabilir.
API varsayılan olarak, yerle ilişkili birincil tür değerinden bağımsız olarak tüm yerleri input
parametresine göre döndürür. types
parametresini ileterek sonuçları belirli bir birincil tür veya birincil türlerle sınırlandırın.
Tablo A veya Tablo B'den en fazla beş tür değeri belirtmek için bu parametreyi kullanın. Bir yer, yanıta dahil edilmek için belirtilen birincil tür değerlerinden biriyle eşleşmelidir.
Aşağıdaki durumlarda istek INVALID_REQUEST
hatasıyla reddedilir:
- Beşten fazla tür belirtilmiş.
- Tanınmayan türler belirtilir.
Örneğin, sonuçları spor malzemeleri mağazalarıyla sınırlamak için AutocompleteFilter
parametresinde bu türü belirtin:
Yerler Swift SDK'sı
let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
Swift
let filter = GMSAutocompleteFilter() filter.types = ["sporting_goods_store"]
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.types = @[ "sporting_goods_store" ];
ülkeler
Yalnızca belirtilen bölgelerin listesinden gelen sonuçları dahil eder. Bu liste, en fazla 15 ccTLD ("üst düzey alan") iki karakterli değer dizisi olarak belirtilir. Atlanırsa yanıta herhangi bir kısıtlama uygulanmaz. Örneğin, bölgeleri Almanya ve Fransa ile sınırlamak için:
Yerler Swift SDK'sı
let filter = AutocompleteFilter(countries: ["DE", "FR"])
Swift
let filter = GMSAutocompleteFilter() filter.countries = ["DE", "FR"]
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.countries = @[ @"DE", @"FR" ];
Hem locationRestriction
hem de countries
'ü belirtirseniz sonuçlar, iki ayarın kesişim alanında bulunur.
inputOffset
input
içindeki imleç konumunu belirten sıfır tabanlı Unicode karakter ofseti. İmlecin konumu, döndürülen tahminleri etkileyebilir. Boşsa varsayılan olarak input
uzunluğunda olur.
locationBias veya locationRestriction
Arama alanını tanımlamak için locationBias
veya locationRestriction
ikilisinden birini belirtebilirsiniz; ikisini birden belirtmeyin. locationRestriction
'ü, sonuçların içinde olması gereken bölgeyi, locationBias
'ü ise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtmek olarak düşünebilirsiniz.
locationBias
, aranacak bir alanı belirtir. Bu konum, bir önyargı görevi görür. Yani belirtilen alanın dışındaki sonuçlar da dahil olmak üzere belirtilen konumun çevresindeki sonuçlar döndürülebilir.locationRestriction
, aranacak bir alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez.
locationBias
veya locationRestriction
bölgesini dikdörtgen bir görüntü alanı veya daire olarak belirtin.
Daireler, merkez noktası ve yarıçapı (metre cinsinden) ile tanımlanır. Yarıçap 0,0 ile 50000,0 arasında (bu değerler dahil) olmalıdır. Varsayılan değer 0,0'dır. locationRestriction
için 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:
Yerler Swift SDK'sı
let center = CLLocationCoordinate2DMake(40.477398, -74.259087) let bias = CircularCoordinateRegion(center: center, radius: 1000.0) let filter = AutocompleteFilter(coordinateRegionBias: bias)
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);
Dikdörtgen, çapraz olarak birbirine zıt iki low
ve high
noktası olarak gösterilen bir enlem-boylam görüntü alanıdır. Görüntü alanı kapalı bir bölge olarak kabul edilir. Yani görüntü alanı, kendi sınırını içerir. Enlem sınırları -90 ile 90 derece arasında (bu değerler dahil), boylam sınırları ise -180 ile 180 derece arasında (bu değerler dahil) olmalıdır:
low
=high
ise görüntü alanı tek bir noktadan oluşur.low.longitude
>high.longitude
ise boylam aralığı tersine çevrilir (görüntü alanı 180 derece 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ştur.
Hem low
hem de high
doldurulmalıdır ve temsil edilen kutu boş olamaz. Boş bir görüntü alanı hatayla sonuçlanır.
Örneğin, bu görüntü alanı New York'u tamamen içine alır:
Yerler Swift SDK'sı
let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087) let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051) let filter = AutocompleteFilter(coordinateRegionBias: bias)
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);
kaynak
Hedefe olan düz çizgi mesafesinin hesaplanacağı başlangıç noktası (distanceMeters
olarak döndürülür). Bu değer atlanırsa düz çizgi mesafesi döndürülmez. Enlem ve boylam koordinatları olarak belirtilmelidir:
Yerler Swift SDK'sı
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
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];
regionCode
Yanıtı biçimlendirmek için kullanılan bölge kodu. ccTLD ("üst düzey alan") iki karakterli bir değer olarak belirtilir. ccTLD kodlarının çoğu, bazı önemli istisnalar dışında ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" iken (.co.uk) ISO 3166-1 kodu "gb"dir (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı" tüzel kişiliği için).
Geçersiz bir bölge kodu belirtirseniz API INVALID_ARGUMENT
hatası döndürür. Parametre, geçerli yasaya göre sonuçları etkileyebilir.
shouldIncludePureServiceAreaBusinesses
true
ise yanıt dizisinde yalnızca hizmet bölgesi işletmelerini döndürür. Saf hizmet bölgesi işletmesi, müşterileri doğrudan ziyaret eden veya onlara teslimat yapan ancak işletme adresinde müşterilere hizmet vermeyen bir işletmedir.
Örneğin:
Yerler Swift SDK'sı
let filter = AutocompleteFilter() filter.shouldIncludePureServiceAreaBusinesses = true
Swift
let filter = AutocompleteFilter() filter.shouldIncludePureServiceAreaBusinesses = true
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.shouldIncludePureServiceAreaBusinesses = YES;
Yer Adı Otomatik Tamamlama widget'ını ekleme
Tutarlı bir yer otomatik tamamlama deneyimi sunmak için uygulamanıza Yer Otomatik Tamamlama widget'ını ekleyebilirsiniz. Widget, kullanıcı girişini işleyen ve uygulamaya AutocompletePlaceSuggestion
öğeleri döndürürken kullanıcıya yer tahminlerini gösteren özel, tam ekran bir arayüz sağlar. Ardından, yer tahminlerinden herhangi biri hakkında ek bilgi edinmek için Yer Ayrıntıları (Yeni) isteği gönderebilirsiniz.
Yer tahminlerini programatik olarak alma işleminde olduğu gibi, Yer Otomatik Tamamlama widget'ı da faturalandırma amacıyla otomatik tamamlama isteklerini oturumlara gruplandırmak için oturum jetonlarını kullanmanıza olanak tanır. AutocompleteSessionToken()
işlevini çağırarak oturum jetonu iletebilirsiniz.
Oturum jetonu sağlamazsanız widget sizin için bir Otomatik Tamamlama oturum jetonu oluşturur. Bu jeton daha sonra onSelection
geri çağırma işlevinden elde edilebilir. Oturum jetonlarını kullanma hakkında daha fazla bilgi için Oturum jetonları hakkında başlıklı makaleyi inceleyin.
show
bağlama değeri true
olarak ayarlandığında kullanıcı, bir yer seçebileceği tam ekran görünümüne yönlendirilir. Kullanıcı yazarken widget; işletme, adres ve önemli yerler gibi yerlerle ilgili öneriler döndürür. Kullanıcı bir yer seçtiğinde widget, seçilen yerle birlikte onSelection
işleyiciyi çağırır ve tam ekran görünümü kapatır.
Yer Adı Otomatik Tamamlama widget'ı parametreleri
Otomatik Yer Tamamlama widget'ı, programlı olarak kullanılabilen parametrelere ek olarak aşağıdaki parametreleri de sunar.
göster
show
, widget'ın gösterilip gösterilmeyeceğini belirtir.
AutocompleteUICustomization
AutocompleteUICustomization
parametreleri, widget'a uygulanacak kullanıcı arayüzü özelleştirmelerini belirtir. Özelleştirme seçenekleri şunlardır:
AutocompleteListDensity
: Bu parametre, öneri listesinin yoğunluğunu (multiLine
veyatwoLine
) seçmenize olanak tanır.AutocompleteUIIcon
: Bu parametre, her liste öğesi için varsayılan simgenin gösterilip gösterilmeyeceğini seçmenize olanak tanır.
onSelection
Bir yer seçildiğinde çalışacak kapanış.
onError
Hata oluştuğunda çalıştırılacak kapatma. Hata meydana gelirse PlacesError
iletilir.
Otomatik tamamlama (yeni) örnekleri
locationRestriction ve locationBias özelliklerini kullanma
Otomatik Tamamlama (Yeni), arama alanını kontrol etmek için varsayılan olarak IP önyargısını kullanır. IP önyargısı, sonuçları önyargılı hale getirmek için API'nin cihazın IP adresini kullanmasıdır. Arama yapılacak alanı belirtmek için isteğe bağlı olarak locationRestriction
veya locationBias
'den birini kullanabilirsiniz.
Konum kısıtlaması, aranacak alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez. Aşağıdaki örnekte, isteği San Francisco merkezli 5.000 metre yarıçaplı dairesel bir konum kısıtlamasıyla sınırlamak için konum kısıtlaması kullanılır:
Yerler Swift SDK'sı
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. }
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. } } }];
Konum yanlılığı, konumun bir yanlılık olarak kullanıldığı anlamına gelir. Bu, belirtilen alanın dışındaki sonuçlar da dahil olmak üzere belirtilen konumun çevresindeki sonuçların döndürülebileceği anlamına gelir. Aşağıdaki örnekte, önceki istek konum önyargısı kullanacak şekilde değiştirilmiştir:
Yerler Swift SDK'sı
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. }
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. } } }];
Kullanım türleri
Bir istekteki sonuçları Tablo A ve Tablo B'de listelenen belirli bir türde olacak şekilde kısıtlamak için types parametresini kullanın. En fazla beş değer içeren bir dizi belirtebilirsiniz. Atlanırsa tüm türler döndürülür.
Aşağıdaki örnekte "Futbol" adlı bir sorgu dizesi belirtilmiştir ve sonuçları "sporting_goods_store"
türündeki tesislerle sınırlandırmak için types parametresi kullanılmıştır:
Yerler Swift SDK'sı
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. }
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. } } }];
Kaynağı kullanın
İsteğe enlem ve boylam koordinatları olarak belirtilen origin
parametresini eklediğinizde API, başlangıçtan hedefe kadar olan düz çizgi mesafesini yanıta dahil eder. Yanıt, mesafeyi distanceMeters
olarak döndürür.
Bu örnekte, başlangıç noktası San Francisco'nun merkezi olarak ayarlanmıştır:
Yerler Swift SDK'sı
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. }
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. } } }];
Yerler Otomatik Tamamlama widget'ı ekleme
Yerler Swift SDK'sı
struct PlaceAutocompleteDemoView: View { @State private var fetchedPlace: Place? @State private var placesError: PlacesError? @State private var showWidget = false public var body: some View { VStack { Button("Search for a place") { showWidget.toggle() } .placeAutocomplete( show: $showWidget, onSelection: { (autocompletePlaceSuggestion, autocompleteSessionToken) in Task { let placesClient = await PlacesClient.shared let fetchPlaceRequest = FetchPlaceRequest( placeID: autocompletePlaceSuggestion.placeID, placeProperties: [.displayName, .formattedAddress], sessionToken: autocompleteSessionToken ) switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): print("Fetched place: \(place)") self.fetchedPlace = place case .failure(let placesError): print("Failed to fetch place: \(placesError)") self.placesError = placesError } } }, onError: { placesError in self.placesError = placesError } ) } } }
İlişkilendirmeler
Otomatik Tamamlama (Yeni) özelliğini harita olmadan da kullanabilirsiniz. Harita göstermek istiyorsanız Google haritası olmalıdır. Otomatik Tamamlama (Yeni) hizmetinden gelen önerileri harita olmadan gösterdiğinizde arama alanı/sonuçlarla satır içi olarak gösterilen Google logosunu eklemeniz gerekir. Daha fazla bilgi için Google logosunu ve ilişkilendirmeleri görüntüleme başlıklı makaleyi inceleyin.