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 bir kullanıcı girişi olan "Spagh" dizesini giriş olarak 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, 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.
Yerler Swift SDK'sı sürümü
PlacesClient üzerinde bir yöntem çağırarak otomatik tamamlama isteği oluşturun.
Parametreleri AutocompleteRequest nesnesinde iletebilirsiniz. Yanıt, 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.
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, en fazla beş GMSAutocompleteSuggestion örnekten oluşan bir dizi döndürür. Dizi şunları içerir:
placeIDtypes: 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. 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ı, 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.
iOS için Yerler SDK'sının parçası olmayan diğer hizmetlere (ör. Adres Doğrulama) iletmek üzere Yerler Otomatik Tamamlama oturum jetonunuzu kullanıma sunabilirsiniz:
Yerler Swift SDK'sı
let token = AutocompleteSessionToken() let filter = AutocompleteFilter(origin: CLLocationCoordinate2DMake(39.7, -94.5)) let request = AutocompleteRequest(query: "Piz", sessionToken: token, filter: filter) PlacesClient.shared.fetchAutocompleteSuggestions(request: request) { case .success(let suggestions): ... case .failure(let placesError): print(placesError) } // pass token's string format to use with a service that is not a part of iOS SDK. print("token: \(token)")
Objective-C
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Piz"]; GMSAutocompleteSessionToken *token = [[GMSAutocompleteSessionToken alloc] init]; request.sessionToken = token; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.origin = [[CLLocation alloc] initWithLatitude:39.7 longitude:-94.5]; filter.locationBias = GMSPlaceRectangularLocationOption(topLocation, bottomLocation); request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> *_Nullable results, NSError *_Nullable error) { ... }]; // pass token's string format to use with a service that is not a part of iOS SDK. NSLog(@"%@", token.description);
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 bölümünde 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ölgeler listesindeki sonuçları ekleyin. Bu sonuçlar, 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:
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 değerini 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ğuna ayarlanı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, locationBias ise sonuçların yakınında olması gereken ancak alanın dışında olabileceği bölgeyi belirtir.
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 50.000,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:
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, enlem-boylam görüntü alanıdır ve köşegen olarak birbirine zıt 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=highise görüntü alanı tek bir noktadan oluşur.low.longitude>high.longitudeise boylam aralığı ters çevrilir (görüntü 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ıdır ve gösterilen kutu boş olamaz. Boş bir görünüm penceresi hataya neden olur.
Örneğin, bu görünüm penceresi New York şehrini tamamen kapsar:
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 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:
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") olarak belirtilen iki karakterli bir değerdir. 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 salt hizmet bölgesi işletmelerini döndürür. Salt 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:
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 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 işleminde olduğu gibi, 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.
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.
İçerik ve tema özelleştirme
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 seçmenize olanak tanır. YoğunlukmultiLineveyatwoLineolabilir.AutocompleteUIIcon. Bu parametre, her liste öğesi için varsayılan simgenin gösterilip gösterilmeyeceğini seçmenize olanak tanır.theme. Bu parametre, varsayılan stil özelliklerinden herhangi birini geçersiz kılan özel bir temayı belirtir. Yer otomatik tamamlama bileşeninizin renklerini, tipografisini, boşluklarını, kenarlıklarını ve köşelerini özelleştirebilirsiniz. Varsayılan değer:PlacesMaterialTheme. Geçersiz kılınmayan tüm tema özellikleri varsayılan stilleri kullanır.
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ı, aranacak 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ılmaktadı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 önyargısında, konum bir önyargı olarak işlev görü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:
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 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:
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ğı 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:
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. } } }];
İçeriği ve temayı özelleştirme
Swift
let uiCustomization = AutocompleteUICustomization( listDensity: .multiLine, listItemIcon: .noIcon, theme: PlacesMaterialTheme() )
Yer Otomatik Tamamlama widget'ı ekleme (tam kod)
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 } ) } } }
Otomatik tamamlama (yeni) optimizasyonu
Bu bölümde, Otomatik Tamamlama (Yeni) hizmetinden en iyi şekilde yararlanmanıza yardımcı olacak en iyi uygulamalar açıklanmaktadır.
Genel kurallardan bazıları şunlardır:
- Çalışan bir kullanıcı arayüzü geliştirmenin en hızlı yolu şunları kullanmaktır: Maps JavaScript API Autocomplete (New) widget, Android için Yerler SDK'sı Autocomplete (New) widget, veya iOS için Yerler SDK'sı Autocomplete (New) widget.
- Başlangıçtan itibaren temel Otomatik Tamamlama (Yeni) veri alanlarını anlayın.
- Konum tercihi ve konum kısıtlama alanları isteğe bağlıdır ancak otomatik tamamlama performansını önemli ölçüde etkileyebilir.
- API hata döndürürse uygulamanızın sorunsuz bir şekilde çalışmaya devam etmesini sağlamak için hata işlemeyi kullanın.
- Uygulamanızın seçim yapılmadığı durumları yönettiğinden ve kullanıcılara devam etme olanağı sunduğundan emin olun.
Maliyet optimizasyonu ile ilgili en iyi uygulamalar
Temel maliyet optimizasyonu
Otomatik Tamamlama (Yeni) hizmetinin kullanım maliyetini optimize etmek için Yer Ayrıntıları (Yeni) ve Otomatik Tamamlama (Yeni) widget'larında alan maskeleri kullanarak yalnızca ihtiyacınız olan Otomatik Tamamlama (Yeni) veri alanlarını döndürün.
Gelişmiş maliyet optimizasyonu
SKU: Otomatik Tamamlama İsteği fiyatlandırması'na erişmek için Otomatik Tamamlama (Yeni) özelliğini programatik olarak uygulayabilir ve Yer Ayrıntıları (Yeni) yerine seçilen yerle ilgili Coğrafi Kodlama API sonuçları isteyebilirsiniz. Aşağıdaki koşulların her ikisi de karşılanıyorsa Geocoding API ile birlikte kullanılan istek başına fiyatlandırma, oturum başına (oturum tabanlı) fiyatlandırmaya kıyasla daha uygun maliyetlidir:
- Yalnızca kullanıcının seçtiği yerin enlemi/boylamı veya adresi gerekiyorsa Geocoding API, bu bilgileri Place Details (New) çağrısından daha az bir ücret karşılığında sağlar.
- Kullanıcılar, ortalama dört veya daha az Otomatik Tamamlama (Yeni) tahmin isteği içinde bir otomatik tamamlama tahmini seçerse istek başına fiyatlandırma, oturum başına fiyatlandırmaya kıyasla daha uygun maliyetli olabilir.
Uygulamanız, seçilen tahminin adresi ve enlem/boylamı dışında herhangi bir bilgi gerektiriyor mu?
Evet, daha fazla ayrıntı gerekiyor
Yer Ayrıntıları (Yeni) ile oturuma dayalı Otomatik Tamamlama (Yeni) özelliğini kullanın.
Uygulamanızda yer adı, işletme durumu veya açılış saatleri gibi Yer Ayrıntıları (Yeni) gerektiğinden,
Otomatik Tamamlama (Yeni) özelliğini uygularken bir oturum jetonu (programatik olarak veya JavaScript, Android ya da iOS widget'larına yerleştirilmiş)
oturum başına ve talep ettiğiniz yer verileri alanlarına bağlı olarak geçerli Yerler SKU'ları kullanmanız gerekir.1
Widget uygulaması
Oturum yönetimi, otomatik olarak
JavaScript,
Android,
veya iOS
widget'larına yerleştirilmiştir. Buna, seçilen tahmindeki hem Otomatik Tamamlama (Yeni) istekleri hem de Yer Ayrıntıları (Yeni) isteği dahildir. Yalnızca ihtiyacınız olan Autocomplete (New) veri alanlarını istediğinizden emin olmak için fields parametresini belirttiğinizden emin olun.
Autocomplete (New) data fields
you need.
Programatik uygulama
Otomatik Tamamlama (Yeni) isteklerinizle birlikte
oturum jetonu
kullanın. Seçilen tahminle ilgili Yer Ayrıntıları (Yeni) isteğinde bulunurken aşağıdaki parametreleri ekleyin:
- Otomatik Tamamlama (Yeni) yanıtındaki yer kimliği
- Otomatik Tamamlama (Yeni) isteğinde kullanılan oturum jetonu
- İhtiyacınız olan
fieldsparametresi, Otomatik Tamamlama (Yeni) veri alanlarını belirtir.
Hayır, yalnızca adres ve konum gerekiyor
Autocomplete (Yeni) kullanımınızın performansına bağlı olarak, Geocoding API, uygulamanız için Yer Ayrıntıları (Yeni) özelliğinden daha uygun maliyetli bir seçenek olabilir. Her uygulamanın Otomatik Tamamlama (Yeni) verimliliği, kullanıcıların ne girdiğine, uygulamanın nerede kullanıldığına ve performans optimizasyonuyla ilgili en iyi uygulamaların uygulanıp uygulanmadığına bağlı olarak değişir.
Aşağıdaki soruyu yanıtlamak için bir kullanıcının uygulamanızda bir otomatik tamamlama (yeni) tahmini seçmeden önce ortalama kaç karakter yazdığını analiz edin.
Kullanıcılarınız, ortalama olarak dört veya daha az istekte bir otomatik tamamlama (yeni) tahmini seçiyor mu?
Evet
Oturum jetonları olmadan Otomatik Tamamlama (Yeni) programatik olarak uygulayın ve seçilen yer tahmini için Coğrafi Kodlama API'sini çağırın.
Geocoding API, adresleri ve enlem/boylam koordinatlarını sağlar.
Seçilen yer tahminiyle ilgili dört Otomatik Tamamlama isteği ve bir Geocoding API çağrısı yapmak, oturum başına Otomatik Tamamlama (Yeni) oturum başına maliyetinden daha düşüktür.1
Kullanıcılarınızın aradıkları tahmini daha da az karakterle almalarına yardımcı olmak için performansla ilgili en iyi uygulamaları kullanabilirsiniz.
Hayır
Yer Ayrıntıları (Yeni) ile oturuma dayalı Otomatik Tamamlama (Yeni) özelliğini kullanın.
Kullanıcı bir Otomatik Tamamlama (Yeni) tahmini seçmeden önce yapmayı beklediğiniz ortalama istek sayısı, oturum başına fiyatlandırmanın maliyetini aştığından, Otomatik Tamamlama (Yeni) uygulamanız hem Otomatik Tamamlama (Yeni) istekleri hem de ilişkili Yer Ayrıntıları (Yeni) isteği için oturum başına bir oturum jetonu kullanmalıdır.
1
Widget uygulaması
Oturum yönetimi,
JavaScript,
Android,
veya iOS
widget'larına otomatik olarak yerleştirilir. Buna hem Otomatik Tamamlama (Yeni) istekleri hem de seçilen tahmindeki Yer Ayrıntıları (Yeni) isteği dahildir. Yalnızca ihtiyacınız olan alanları istediğinizden emin olmak için fields parametresini belirttiğinizden emin olun.
Programatik uygulama
Otomatik Tamamlama (Yeni) isteklerinizle birlikte
oturum jetonu
kullanın.
Seçilen tahminle ilgili Yer Ayrıntıları (Yeni) isteğinde bulunurken aşağıdaki parametreleri ekleyin:
- Otomatik Tamamlama (Yeni) yanıtındaki yer kimliği
- Otomatik Tamamlama (Yeni) isteğinde kullanılan oturum jetonu
- Adres ve geometri gibi alanları belirten
fieldsparametresi
Otomatik Tamamlama (Yeni) isteklerini geciktirmeyi düşünün
Uygulamanızın daha az istekte bulunması için kullanıcının ilk üç veya dört karakteri yazmasını bekleyerek Otomatik Tamamlama (Yeni) isteğini geciktirme gibi stratejiler kullanabilirsiniz. Örneğin, kullanıcı üçüncü karakteri yazdıktan sonra her karakter için otomatik tamamlama (yeni) isteğinde bulunmak, kullanıcının yedi karakter yazıp bir tahmin seçmesi durumunda (bu tahmin için bir Coğrafi Kodlama API isteğinde bulunursunuz) toplam maliyetin 4 Otomatik Tamamlama (Yeni) İsteği + Coğrafi Kodlama olacağı anlamına gelir.1
İstekleri geciktirmek, ortalama programatik istek sayınızı dörtten aşağıya düşürebiliyorsa Geocoding API ile yüksek performanslı otomatik tamamlama (yeni) uygulamasıyla ilgili yönergeleri uygulayabilirsiniz. İsteklerin geciktirilmesinin, her yeni tuş vuruşunda tahmin görmeyi bekleyen kullanıcı tarafından gecikme olarak algılanabileceğini unutmayın.
Kullanıcılarınızın aradığı tahmini daha az karakterle almasına yardımcı olmak için performansla ilgili en iyi uygulamaları kullanabilirsiniz.
-
Maliyetler için Google Haritalar Platformu fiyatlandırma listelerine bakın.
Performansla ilgili en iyi uygulamalar
Aşağıdaki yönergelerde, otomatik tamamlama (yeni) performansını optimize etmenin yolları açıklanmaktadır:
- Otomatik Tamamlama (Yeni) uygulamanıza ülke kısıtlamaları, konum önyargısı ve (programatik uygulamalar için) dil tercihi ekleyin. Dil tercihi, kullanıcının tarayıcısından veya mobil cihazından dil tercihlerini aldıkları için widget'larda gerekli değildir.
- Otomatik Tamamlama (Yeni) özelliğine harita eşlik ediyorsa harita görüntü alanına göre konumu önyargılı hale getirebilirsiniz.
- Kullanıcının, genellikle bu tahminlerden hiçbiri istenen sonuç adresi olmadığı için Otomatik Tamamlama (Yeni) tahminlerinden birini seçmediği durumlarda, daha alakalı sonuçlar elde etmek için orijinal kullanıcı girişini yeniden kullanabilirsiniz:
- Kullanıcının yalnızca adres bilgisi gireceğini düşünüyorsanız Coğrafi Kodlama API'sine yapılan bir çağrıda orijinal kullanıcı girişini yeniden kullanın.
- Kullanıcının belirli bir yerle ilgili sorguları ada veya adrese göre girmesini bekliyorsanız Yer Ayrıntıları (Yeni) isteğini kullanın. Sonuçların yalnızca belirli bir bölgede beklenmesi durumunda konum önyargısı kullanın.
- Kullanıcılar, bir bina içindeki belirli birimlerin veya dairelerin adresleri gibi alt tesis adreslerini girerken. Örneğin, "Stroupežnického 3191/17, Praha" Çekçe adresi, otomatik tamamlama (yeni) özelliğinde kısmi bir tahminle sonuçlanır.
- New York'ta "23-30 29th St, Queens" veya Hawaii'deki Kauai adasında "47-380 Kamehameha Hwy, Kaneohe" gibi yol segmenti ön ekleri içeren adresleri giren kullanıcılar.
Konum önyargısı
location parametresi ve radius parametresi ileterek sonuçları belirli bir alana yönlendirin. Bu, otomatik tamamlama (yeni) özelliğine, tanımlanan alan içindeki sonuçları göstermeyi tercih etmesini bildirir. Tanımlanan alanın dışındaki sonuçlar gösterilmeye devam edebilir. Sonuçları yalnızca belirtilen bir ülke içindeki yerleri gösterecek şekilde filtrelemek için components parametresini kullanabilirsiniz.
Konum kısıtlama
locationRestriction parametresi ileterek sonuçları belirli bir alanla sınırlayın.
Ayrıca, location ve radius parametresiyle tanımlanan bölgeyle sonuçları kısıtlamak için locationRestriction parametresini ekleyebilirsiniz. Bu, Otomatik Tamamlama (Yeni) özelliğine yalnızca bu bölgedeki sonuçları döndürmesi talimatını verir.