Otomatik Tamamlama (Yeni), arama alanını kontrol eden bir metin arama dizesi ve coğrafi sınırlar içeren bir istekle yanıt olarak yer tahminleri döndürür. Otomatik tamamlama eşleşebilir girişteki tam sözcükler ve alt dizeler üzerinde çalışır; yer adlarını, adresleri ve artı kodları kullanabilirsiniz. Uygulamanız, kullanıcı yazarken sorgu göndererek anında yer ve sorgu tahminleri sağlayabilir.
Örneğin, giriş olarak kısmi bir kullanıcı girişi içeren bir dize (ör. "Sicilian piz") ve arama alanını San Francisco, CA ile sınırlandırarak Otomatik Tamamlama'yı çağırırsınız. Sonra da yanıtta bir yer listesi arama dizesi ve arama alanıyla eşleşen tahminler (ör. restoran) bir bülten var.
Döndürülen yer tahminleri, kullanıcının istediği yeri seçmesine yardımcı olmak için kullanıcıya sunulmak üzere tasarlanmıştır. Döndürülen yer tahminlerinden herhangi biri hakkında daha fazla bilgi edinmek için Yer Ayrıntıları (Yeni) isteği gönderebilirsiniz.
Otomatik Tamamlama (Yeni) istekleri
Uygulamanız, FindAutocompletePredictionsRequest
nesnesi göndererek PlacesClient.findAutocompletePredictions()
işlevini çağırarak otomatik tamamlama API'sinden tahmin edilen yer adlarının ve/veya adreslerin listesini alabilir. Aşağıdaki örnekte PlacesClient.findAutocompletePredictions()
işlevine yapılan tam bir çağrı gösterilmektedir.
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Sicilian piz") .setRegionCode("ES") .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Otomatik tamamlama (yeni) yanıtları
API, Task
içinde bir FindAutocompletePredictionsResponse
döndürür.
İlgili içeriği oluşturmak için kullanılan
FindAutocompletePredictionsResponse
en fazla beş kişilik bir liste içerir
AutocompletePrediction
nesneleri ifade eder. Sorguya ve filtre ölçütlerine karşılık gelen bilinen bir yer yoksa liste boş olabilir.
Tahmin edilen her yer için yer ayrıntılarını almak üzere aşağıdaki yöntemleri çağırabilirsiniz:
getFullText(CharacterStyle)
bir yer açıklamasının tam metnini döndürür. Bu, birincil ve ikincil metnin bir birleşimidir. Örnek: "Eyfel Kulesi, Anatole France Caddesi, Paris, Fransa". Ayrıca bu yöntem,CharacterStyle
kullanarak açıklamanın aramayla eşleşen bölümlerini istediğiniz bir stille vurgulamanıza olanak tanır.CharacterStyle
parametresi isteğe bağlıdır. Vurgulamaya ihtiyacınız yoksa null olarak ayarlayın.getPrimaryText(CharacterStyle)
bir yeri açıklayan ana metni döndürür. Bu genellikle alan adının yer. Örnekler: "Eyfel Kulesi" ve "İstiklal Caddesi No:123".getSecondaryText(CharacterStyle)
bir yer açıklamasının yan metnini döndürür. Bu, proje hedefinizin Örneğin, otomatik tamamlama tahminlerini gösterirken ikinci satır olarak. Örnekler: "Avenue Anatole France, Paris, Fransa" ve "Sydney, New South Wales".getPlaceId()
tahmin edilen yerin yer kimliğini döndürür. Yer kimliği, bir yeri benzersiz şekilde tanımlayan metin tabanlı bir tanımlayıcıdır. Bu kimliği,Place
öğesini daha sonra tekrar almak için kullanabilirsiniz. Otomatik Tamamlama'daki yer kimlikleri hakkında daha fazla bilgi için Yer Ayrıntıları (Yeni) başlıklı makaleyi inceleyin. Genel hakkında bilgi için Yer Kimliği genel bakış bölümüne bakın.getTypes()
bu yerle ilişkili yer türlerinin listesini döndürür.getDistanceMeters()
yer ile arasındaki düz çizgi mesafesini metre cinsinden döndürür istekte belirtilen kaynak.
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.
Sorgu parametresini ayarlamak için
setQuery()
çağrısını yapın yöntemini kullanarakFindAutocompletePredictionsRequest
nesnesini oluşturabilirsiniz.
İsteğe bağlı parametreler
-
Birincil türler
Yanıtta döndürülen yerleri filtrelemek için kullanılan Tablo A veya Tablo B türlerinden en fazla beş tür değerinin listesi. Bir yerin yanıta dahil edilebilmesi için belirtilen birincil tür değerlerinden biriyle eşleşmesi gerekir.
Bir yerin, ilişkili Tablo A veya Tablo B türlerinden yalnızca bir birincil türü olabilir. Örneğin, birincil tür
"mexican_restaurant"
veya"steak_house"
olabilir.Aşağıdaki durumlarda istek
INVALID_REQUEST
hatasıyla reddedilir:- Beşten fazla tür belirtilmiş.
- Tanınmayan türler belirtilir.
Birincil tür parametresini ayarlamak için
FindAutocompletePredictionsRequest
nesnesini oluştururkensetTypesFilter()
yöntemini çağırın. -
Ülkeler
En fazla 15 karakterlik bir liste olarak belirtilen, belirtilen ülkeler listesindeki sonuçları dahil et ccTLD ("üst düzey alan") iki karakterli değerler sunmalıdır. Atlanırsa yanıta herhangi bir kısıtlama uygulanmaz. Örneğin, sınırı Almanya ve Fransa ile sınırlayın:
Hem
locationRestriction
hem deincludedRegionCodes
'ü belirtirseniz sonuçlar, iki ayarın kesişim alanında bulunur.countries parametresini ayarlamak için
FindAutocompletePredictionsRequest
nesnesini oluştururkensetCountries()
yöntemini çağırın. -
Giriş ofseti
Sorgudaki imleç konumunu gösteren sıfır tabanlı Unicode karakter ofseti. İmlecin konumu, döndürülen tahminleri etkileyebilir. Boşsa varsayılan olarak emin olmanız gerekir.
Giriş ofseti parametresini ayarlamak için
setInputOffset()
parametresini çağırın yöntemini kullanarakFindAutocompletePredictionsRequest
nesnesini oluşturabilirsiniz. Konum yanlılığı veya konum kısıtlaması
Konum sapması veya konum kısıtlaması belirleyebilirsiniz. kullanın. Konum kısıtlamasını, sonuçlarda bulunması gereken bölge ve konum sapması sonuçların yakınında olması gereken bölgeyi belirtmelidir. Aralarındaki temel fark ile, belirtilen bölgenin dışındaki sonuçlar yine de döndürülebilir.
Konum ön yargısı
Aranacak bir alanı belirtir. Bu konum bir kısıtlama değil, önyargı işlevi görür. Dolayısıyla, yine de belirtilen alanın dışındakiler döndürülebilir.
Konum önyargısı parametresini ayarlamak için
setLocationBias()
işlevini çağırın yöntemini kullanarakFindAutocompletePredictionsRequest
nesnesini oluşturabilirsiniz.Konum kısıtlaması
Aranacak alanı belirtir. Belirtilen alanın dışındaki sonuçlar döndürülmez.
Konum kısıtlaması parametresini ayarlamak için
setLocationRestriction()
parametresini çağırın yöntemini kullanarakFindAutocompletePredictionsRequest
nesnesini oluşturabilirsiniz.
Konum sapmasını veya konum kısıtlama bölgesini dikdörtgen görünüm veya daire şeklinde.
Bir daire, merkez noktası ve metre cinsinden yarıçapıyla 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. Konum kısıtlaması 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.
Dikdörtgen, çapraz olarak karşı karşıya duran iki
low
vehigh
noktası olarak temsil edilen bir enlem-boylam görüntü alanıdır. Görüntü alanı kapalı bir bölge olarak kabul edilir. Yani kendi sınırını içerir. Enlem sınırları -90 ile 90 derece (her ikisi de dahil) arasında olmalı ve boylam sınırları -180 ile 180 derece (her iki değer dahil) arasında olmalıdır:low
=high
ise görüntü alanı tek bir noktadan oluşur.- Eğer
low.longitude
>high.longitude
, boylam aralığı ters çevrilmiş (görüntü alanı 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 dehigh
doldurulmalı ve gösterilen kutu doldurulmalıdır boş bırakılamaz. Boş bir görüntü alanı hatayla sonuçlanır.
-
Köken
Hedefe olan düz çizgi uzaklığının hesaplanacağı başlangıç noktası (
getDistanceMeters()
kullanılarak erişilir). Bu değer çıkarıldığında, düz çizgi mesafesi döndürülmez. Şu şekilde belirtilmelidir: enlem ve boylam koordinatları:Kaynak parametresini ayarlamak için
FindAutocompletePredictionsRequest
nesnesini oluştururkensetOrigin()
yöntemini çağırın. -
Bölge kodu
Yanıtı biçimlendirmek için kullanılan bölge kodu (adres biçimlendirmesi dahil) ccTLD ("üst düzey alan") iki karakterlik 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), ISO 3166-1 kodu "gb" ise (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı").
Geçersiz bir bölge kodu belirtirseniz API bir
INVALID_ARGUMENT
döndürür. hatası. Parametre, geçerli yasaya göre sonuçları etkileyebilir.Bölge kodu parametresini ayarlamak için
setRegionCode()
yöntemini çağırın yöntemini kullanarakFindAutocompletePredictionsRequest
nesnesini oluşturabilirsiniz. -
Oturum jetonu
Oturum jetonları, etkinlikleri izleyen kullanıcı tarafından oluşturulmuş Aramaları "oturumlar" olarak otomatik tamamlama (yeni). Otomatik tamamlama, şunları yapmak için oturum jetonlarını kullanır: Kullanıcı otomatik tamamlama aramasının sorgu ve seçim aşamalarını ayrı bir oturumda . Oturum, Kullanıcı bir sorgu yazmaya başlar ve yer seçtiğinde sona erer. Her oturumda birden fazla sorgu ve ardından bir yer seçimi bulunabilir. Bir oturumda jeton artık geçerli değildir; uygulamanız yeni bir jeton oluşturmalıdır anlamına gelir. Tüm programatik otomatik tamamlama oturumları için oturum jetonlarını kullanmanızı öneririz (Bir parçayı yerleştirdiğinizde veya bir intent kullanarak otomatik tamamlamayı başlattığınızda API bu işlemi otomatik olarak yapar).
Otomatik Tamamlama, her oturumu tanımlamak için bir
AutocompleteSessionToken
kullanır. Uygulamanız, aşağıdaki durumlarda yeni bir oturum jetonu geçirmelidir: sonra da aynı jetonu bir Yer Kimliği ile birlikte iletir.fetchPlace()
'e yapılan bir sonraki çağrı simgesini tıklayın.Oturum jetonu parametresini ayarlamak için
setSessionToken()
parametresini çağırın yöntemini kullanarakFindAutocompletePredictionsRequest
nesnesini oluşturabilirsiniz.Daha fazla bilgi için Oturum jetonları bölümüne bakın.
Otomatik tamamlama (Yeni) örnekleri
Konum kısıtlaması ve konum ağırlıklandırmasını kullan
Otomatik Tamamlama (Yeni) özelliği varsayılan olarak IP ağırlıklandırmayı kullanır: Arama alanını kontrol edebilir. IP önyargısı, API'nin sonuçları önyargılı hale getirmek için cihazın IP adresini kullanmasıdır. Arama yapılacak bir alanı belirtmek için isteğe bağlı olarak konum kısıtlaması veya konum yanlılığı'nı kullanabilirsiniz ancak ikisini birden kullanamazsınız.
Konum kısıtlaması, aranacak alanı belirtir. Belirtilen dışındaki sonuçlar alanı 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:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Konum ön yargısında, konum bir sapma görevi 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:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setLocationBias(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Birincil türleri kullanma
Bir aşağıdaki tabloda listelenen belirli bir türde olma isteği: A ve Tablo B. Tekliflerinizi otomatikleştirmek ve optimize etmek için en fazla beş değerden oluşan bir dizidir. Atlanırsa tüm türler döndürülür.
Aşağıdaki örnekte "Futbol" sorgu dizesi belirtiliyor ve birincil
sonuçları tür kuruluşlarla kısıtlamak için türler parametresi
"sporting_goods_store"
:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); final List<Place.Field> primaryTypes = Arrays.asList("sporting_goods_store"); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Soccer") .setIncludedPrimaryTypes(primaryTypes) .setLocationBias(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Birincil türler parametresini çıkarırsanız sonuçlar, kuruluş
"athletic_field"
gibi, istemeyebileceğiniz bir türde.
Kaynağı kullanın
İsteğe origin parametresini dahil ettiğinizde,
enlem ve boylam koordinatlarıyla birlikte API,
başlangıç noktasından hedefe doğru (ör.
getDistanceMeters()
) seçin.
Bu örnekte başlangıç noktası San Francisco'nun merkezi olarak ayarlanmaktadır:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setOrigin(center) .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
İ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 tahminleri harita olmadan gösterdiğinizde arama alanı/sonuçlarla satır içi olarak gösterilen Google logosunu eklemeniz gerekir. Örneğin, Daha fazla bilgi için bkz. Google logosunu görüntüleme ve ilişkilendirmeleri.