Otomatik Tamamlama (Yeni) hizmeti, bir isteğe yanıt olarak yer önerileri döndüren bir iOS API'sidir. İstekle birlikte, arama alanını kontrol eden bir metin arama dizesi ve coğrafi sınırlar belirtin.
Otomatik Tamamlama (Yeni) hizmeti, girişin tam kelimeleri ve alt dizeleriyle eşleşebilir, yer adlarını, adresleri ve artı kodlarını çözebilir. Bu nedenle uygulamalar, kullanıcı yazarken anında yer önerileri sunmak için sorgu gönderebilir.
Yer önerileri, belirtilen giriş metni dizesine ve arama alanına göre işletmeler, adresler ve ilgi çekici noktalar gibi yerlerdir.
Örneğin, arama alanı New York City ile sınırlı olacak şekilde, kısmi kullanıcı girişi içeren bir dize ("Spagh") kullanarak API'yi çağırıyorsunuz. Yanıt, arama dizesi ve arama alanıyla eşleşen yer önerileri listesini (ör. "Cafe Spaghetti" adlı restoran) ve yerle ilgili ayrıntıları içerir.
Döndürülen yer önerileri, kullanıcının istediği yeri seçebilmesi için tasarlanmıştır. Döndürülen yer önerileri hakkında daha fazla bilgi edinmek için Yer Ayrıntıları (Yeni) isteğinde bulunabilirsiniz.
Otomatik Tamamlama (Yeni) işlevini uygulamanıza iki ana şekilde entegre edebilirsiniz:
- Yer tahminlerini programatik olarak alma: Tahminleri almak ve özel bir kullanıcı arayüzünde göstermek için doğrudan API'yi çağırın.
- Yer Otomatik Tamamlama widget'ını ekleyin: Kullanıcı yazarken tahminleri gösteren, kullanıma 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.
Parametreleri GMSAutocompleteRequest
nesnesinde iletebilirsiniz. Yanıt, bir GMSAutocompletePlaceSuggestion
nesnesi içinde otomatik tamamlama önerileri sağlar.
API anahtarı ve
query
parametreleri gereklidir. Ayrıca, istekleri bir faturalandırma oturumuyla ilişkilendirmek için GMSAutocompleteSessionToken
, sonuçlara uygulamak için de GMSAutocompleteFilter
parametresini ekleyebilirsiniz.
Places Swift SDK sürümü
PlacesClient
üzerinde bir yöntem çağırarak otomatik tamamlama isteği oluşturun.
Parametreleri AutocompleteRequest
nesnesinde iletebilirsiniz. Yanıt, bir AutocompletePlaceSuggestion
nesnesi içinde otomatik tamamlama önerileri sağlar.
API anahtarı ve query
parametreleri gereklidir. Ayrıca, istekleri bir faturalandırma oturumuyla ilişkilendirmek için AutocompleteSessionToken
, sonuçlara uygulamak için de AutocompleteFilter
parametresini ekleyebilirsiniz.
Zorunlu ve isteğe bağlı parametreler hakkında daha fazla bilgi için bu belgenin parametreler bölümüne bakın.
Places 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, en fazla beş GMSAutocompleteSuggestion
örnekten oluşan bir dizi döndürür. Dizi şunları içerir:
placeID
types
: Bu yer için geçerli olan türler.distanceMeters
: Kaynaktan uzaklık.attributedFullText
: Önerinin tam ve okunabilir metni.attributedPrimaryText
: Önerinin insanlar tarafından okunabilir birincil metni.attributedSecondaryText
: Önerinin insanlar tarafından okunabilir ikincil metni.structuredFormat
: Şehir veya bölge gibi netleştirici metin ve belirli ad.
Gerekli parametreler
sorgu
Arama yapılacak metin dizesi. Tam kelimeleri ve alt dizeleri, yer adlarını, adresleri ve artı kodları belirtin. Autocomplete (New) 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ı, kullanıcı tarafından oluşturulan ve hem widget üzerinden yapılan aramaları hem de programatik aramaları "oturum" olarak izleyen dizelerdir. Otomatik Tamamlama (Yeni), faturalandırma amacıyla kullanıcının otomatik tamamlama aramasının sorgu ve seçim aşamalarını 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 yer, Tablo A veya Tablo B'de yer alan türlerden yalnızca tek bir birincil türe sahip olabilir.
Örneğin, birincil tür mexican_restaurant
veya steak_house
olabilir.
API, varsayılan olarak input
parametresine göre tüm yerleri döndürür. Bu işlem, yerle ilişkili birincil tür değerinden bağımsız olarak gerçekleştirilir. types
parametresini ileterek sonuçları belirli bir birincil tür veya birincil türlerle kısıtlayın.
Bu parametreyi kullanarak Tablo A veya Tablo B'den en fazla beş tür değeri belirtebilirsiniz. Yanıtın dahil edilmesi için bir yer, belirtilen birincil tür değerlerinden biriyle eşleşmelidir.
İstek şu durumlarda 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
öğenizde bu türü belirtin:
Places 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ölgeler listesindeki sonuçları ekleyin. Bu bölgeler, en fazla 15 ccTLD ("üst düzey alan") iki karakterli değerden oluşan bir dizi olarak belirtilir. Atlanırsa yanıta kısıtlama uygulanmaz. Örneğin, bölgeleri Almanya ve Fransa ile sınırlamak için:
Places 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
öğesini belirtirseniz sonuçlar iki ayarın kesişim alanında yer alır.
inputOffset
İmleç konumunu input
içinde belirten sıfır tabanlı Unicode karakter uzaklığı. İmleç konumu, hangi tahminlerin döndürüleceğini etkileyebilir. Boşsa varsayılan olarak input
uzunluğu kullanılır.
locationBias veya locationRestriction
Arama alanını tanımlamak için locationBias
veya locationRestriction
değerini belirtebilirsiniz ancak ikisini birden belirtemezsiniz. locationRestriction
, sonuçların içinde olması gereken bölgeyi belirtmek, locationBias
ise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtmek olarak düşünülebilir.
locationBias
, arama yapılacak bir alanı belirtir. Bu konum, bir önyargı olarak işlev 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
, arama yapılacak bir alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez.
locationBias
veya locationRestriction
bölgesini dikdörtgen bir görünüm alanı ya da daire olarak belirtin.
Bir daire, merkez noktası ve metre cinsinden yarıçap 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 sonuç döndürmez.
Örneğin:
Places 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, enlem-boylam görüntü alanıdır ve köşeleri çapraz olarak birbirine bakan iki low
ve high
noktasıyla gösterilir. Görüntü alanı, sınırını da içeren kapalı bir bölge olarak kabul edilir. 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ığı ters çevrilir (görünüm alanı 180 derece boylam çizgisini geçer).low.longitude
= -180 derece vehigh.longitude
= 180 derece ise görünüm penceresi tüm boylamları içerir.low.longitude
= 180 derece vehigh.longitude
= -180 derece ise boylam aralığı boş olur.
Hem low
hem de high
doldurulmalı ve gösterilen kutu boş olmamalıdır. Boş bir görünüm alanı hataya neden olur.
Örneğin, bu görünüm penceresi New York City'yi tamamen kapsar:
Places 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 kuş uçuşu mesafenin hesaplanacağı başlangıç noktasıdır (distanceMeters
olarak döndürülür). Bu değer atlanırsa kuş uçuşu mesafe döndürülmez. Enlem ve boylam koordinatları olarak belirtilmelidir:
Places 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") olarak belirtilen iki karakterli değer. Bazı önemli istisnalar dışında çoğu ccTLD kodu, ISO 3166-1 kodlarıyla aynıdır. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk) iken 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. Tamamen hizmet bölgesi işletmesi, müşterileri doğrudan ziyaret eden veya onlara teslimat yapan ancak işletme adresinde müşterilere hizmet vermeyen işletmelerdir.
Örneğin:
Places 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 deneyimini daha kolay sağlamak için uygulamanıza Yer Otomatik Tamamlama widget'ını ekleyebilirsiniz. Widget, kullanıcı girişini işleyen ve yer tahminlerini kullanıcıya gösterirken uygulamaya AutocompletePlaceSuggestion
nesnelerini döndüren özel bir tam ekran arayüzü sağlar. Ardından, yer tahminlerinden herhangi biri hakkında ek bilgi almak için Yer Ayrıntıları (Yeni) isteğinde bulunabilirsiniz.
Yer tahminlerini programatik olarak alma gibi durumlarda, Yer Otomatik Tamamlama widget'ı, faturalandırma amacıyla otomatik tamamlama isteklerini oturumlar halinde 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 Autocomplete oturum jetonu oluşturur. Bu jeton daha sonra onSelection
geri çağırma işlevinden alınabilir. Oturum jetonlarını kullanma hakkında daha fazla bilgi için Oturum jetonları hakkında başlıklı makaleye bakın.
show
bağlama değeri true
olarak ayarlandığında kullanıcı, yer seçebileceği tam ekran görünümüne yönlendirilir. Kullanıcı yazarken widget; işletmeler, adresler ve ilgi çekici yerler gibi yerlerle ilgili öneriler döndürür. Kullanıcı bir yer seçtiğinde widget, seçilen yerle birlikte onSelection
işleyicisini çağırır ve tam ekran görünümünü kapatır.
Yer Adı Otomatik Tamamlama widget'ı parametreleri
Otomatik Yer Tamamlama widget'ı, programatik 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ğunumultiLine
veyatwoLine
olarak 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ıştırılacak kapatma.
onError
Hata oluştuğunda çalıştırılacak kapatma. Hata oluşursa PlacesError
iletilir.
Otomatik tamamlama (yeni) örnekleri
locationRestriction ve locationBias parametrelerini kullanma
Otomatik tamamlama (yeni), arama alanını kontrol etmek için varsayılan olarak IP önyargısını kullanır. IP önyargısı ile API, sonuçlara önyargı uygulamak için cihazın IP adresini kullanır. Arama yapılacak bir alanı belirtmek için isteğe bağlı olarak locationRestriction
veya
locationBias
kullanabilirsiniz ancak ikisini birden kullanamazsınız.
Konum kısıtlaması, arama yapılacak alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez. Aşağıdaki örnekte, isteği San Francisco'nun merkezinde 5.000 metre yarıçaplı dairesel bir konum kısıtlamasıyla sınırlamak için konum kısıtlaması kullanılıyor:
Places 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 önyargısında, konum önyargı olarak kullanılır. Bu nedenle, belirtilen konumun çevresindeki sonuçlar (belirtilen alanın dışındaki sonuçlar dahil) döndürülebilir. Aşağıdaki örnekte, önceki istek konum önyargısı kullanacak şekilde değiştiriliyor:
Places 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 isteğin sonuçlarını Tablo A ve Tablo B'de listelenen belirli bir türle sınırlamak için türler parametresini kullanın. En fazla beş değerden oluşan bir dizi belirtebilirsiniz. Atlanırsa tüm türler döndürülür.
Aşağıdaki örnekte "Futbol" sorgu dizesi belirtiliyor ve sonuçları "sporting_goods_store"
türündeki kuruluşlarla sınırlandırmak için türler parametresi kullanılıyor:
Places 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ğı kullanma
İsteğe enlem ve boylam koordinatları olarak belirtilen origin
parametresini eklediğinizde API, yanıta başlangıç noktasından hedef noktaya olan düz çizgi mesafesini ekler. Yanıt, mesafeyi distanceMeters
olarak döndürüyor.
Bu örnekte başlangıç noktası San Francisco'nun merkezine ayarlanır:
Places 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. } } }];
Yer Otomatik Tamamlama widget'ı ekleme
Places 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 } ) } } }