Otomatik tamamlama (Yeni) işleviyle ilgili yer tahminlerini döndürür. metin arama dizesi ve coğrafi sınırlar içeren bir isteğe verilen yanıt kontrol panelidir. Otomatik tamamlama eşleşebilir girişteki tam sözcükler ve alt dizeler üzerinde çalışır; yer adlarını, adresleri artı kodları kullanabilirsiniz. Uygulamanız sorgu gönderebilir hareket hâlindeki yer ve sorgu tahminlerine yer verir.
Örneğin, Otomatik Tamamlama'yı bir giriş olarak "Sicilian piz" adlı kısmi kullanıcı girişini ve arama alanını içeren dize San Francisco, Kaliforniya ile sınırlıdır. 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ıya yardımcı olmak için gösterilecek şekilde tasarlanmıştır seçmelerine yardımcı oluyor. Bir Yer Ayrıntıları oluşturabilirsiniz (Yeni) daha fazla almak için istek gönderin yer tahminleri hakkında bilgi edinemez.
Otomatik tamamlama (Yeni) istekleri
Uygulamanız, tahmin edilen yer adlarının bir listesini ve/veya
otomatik tamamlama API'sinden belirli bir adres için
PlacesClient.findAutocompletePredictions()
,
doğru
FindAutocompletePredictionsRequest
nesnesini tanımlayın. Aşağıdaki örnekte
PlacesClient.findAutocompletePredictions()
.
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,
FindAutocompletePredictionsResponse
Task
.
İlgili içeriği oluşturmak için kullanılan
FindAutocompletePredictionsResponse
en fazla beş kişilik bir liste içerir
AutocompletePrediction
nesneleri ifade eder. Seçim yoksa liste boş olabilir
bilinen yerlerle ilgili sonuçları görüntüleyebilirsiniz.
Tahmin edilen her yer için, yer almak üzere aşağıdaki yöntemleri çağırabilirsiniz ayrıntılar:
getFullText(CharacterStyle)
bir yer açıklamasının tam metnini döndürür. Bu, iki faktörün de birincil ve ikincil metin. Örnek: "Eyfel Kulesi, Avenue Anatole France, Paris, Fransa". Buna ek olarak bu yöntem, retrospektif toplantısının aramayla eşleşen ve seçtiğiniz bir stile sahip açıklamaCharacterStyle
.CharacterStyle
parametresi isteğe bağlıdır. İhtiyacınız yoksa null değerine ayarlayın. farklı alanları seçebilirsiniz.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: "Ameka Anatole France, Paris, Fransa" ve "Sidney, Yeni Güney Galler".getPlaceId()
tahmin edilen yerin yer kimliğini döndürür. Yer kimliği, metin biçimindedir ve bilgileri görüntülemek için kullanabileceğiniz, bir yeri benzersiz şekilde tanımlayan tanımlayıcı "the"Place
daha sonra tekrar deneyin. Şu konumdaki yer kimlikleri hakkında daha fazla bilgi: Otomatik tamamlama, bkz. Yer Ayrıntıları (Yeni). 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()
bu yer ile arasındaki düz çizgi mesafeyi metre cinsinden döndürür istekte belirtilen kaynak.
Gerekli parametreler
-
Sorgu
Arama yapılacak metin dizesi. Tam kelimeleri ve alt dizeleri belirtin, Yer adları, adresler ve artı kodları. Otomatik tamamlama (Yeni) hizmeti bu dizeye göre aday eşleşmeleri döndürür ve sonuçları şuna göre sıralar: alaka düzeyi için kritik önem taşır.
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
Türlerden en fazla beş tür türü değeri içeren bir liste A Tablosu veya Tablo B yanıtta döndürülen yerleri filtrelemek için kullanılır. Bir yerin yanıta dahil edilmesi için belirtilen birincil tür değerlerinden biriyle eşleşmesi gerekir.
Bir yerin, türlerden yalnızca tek bir birincil türü olabilir A Tablosu veya Tablo B ile ilişkili gerçekleşebilir. Örneğin, birincil tür
"mexican_restaurant"
veya"steak_house"
.Aşağıdaki durumlarda istek
INVALID_REQUEST
hatasıyla reddedilir:- Beşten fazla tür belirtilmiş.
- Tanınmayan türler belirtilmiş.
Birincil türler parametresini ayarlamak için
setTypesFilter()
parametresini çağırın yöntemini kullanarakFindAutocompletePredictionsRequest
nesnesini oluşturabilirsiniz. -
Ü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, Almanya ve Fransa ile sınırlandırmak için:
Hem
locationRestriction
hem deincludedRegionCodes
öğesini belirtirseniz sonuçlar, iki ayarın kesişim alanında bulunur.Ülke parametresini ayarlamak için
setCountries()
parametresini çağırın yöntemini kullanarakFindAutocompletePredictionsRequest
nesnesini oluşturabilirsiniz. -
Giriş ofseti
Sorgudaki imlecin konumunu gösteren sıfır tabanlı Unicode karakter farkı. İmleç konumu, hangi tahminlerin döndürüleceğini 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 sapması 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 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 geri döndü.
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ıçapla tanımlanır. Yarıçap şunun arasında olmalıdır: 0,0 ve 50000,0 (bu değerler dahil) 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, sonuç yok.
Dikdörtgen, iki şekilde gösterilen enlem-boylam görünümüdür
low
vehigh
noktanın karşısında çapraz olarak olmalıdır. Görüntü alanı, 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
olursa, görüntü alanı bu tek 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ş 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
setOrigin()
komutunu çağırın yöntemini kullanarakFindAutocompletePredictionsRequest
nesnesini oluşturabilirsiniz. -
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. Çoğu ccTLD kodu, ISO 3166-1 kodlarıyla aynıdır. bazı önemli istisnalarla birlikte. Ö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 yasalara 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 oturum birden fazla sorgu ve ardından tek 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 işlemler için oturum jetonları kullanmanızı öneririz. otomatik tamamlama oturumları (bir parçayı yerleştirdiğinizde veya API bunu otomatik olarak halleder).
Otomatik Tamamlama, bir
AutocompleteSessionToken
tanımlamanız gerekir. 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 bkz. Oturum jetonları.
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'ye ağırlık vermede API, cihazdaki değerleri doğru şekilde ayırın. İsterseniz konum bilgilerini de kullanabilirsiniz. kısıtlama veya konum önyargısı, ancak ikisine de basarak aranacak bir alan belirtin.
Konum kısıtlaması, aranacak alanı belirtir. Belirtilen dışındaki sonuçlar alanı döndürülmez. Aşağıdaki örnekte, isteği şununla sınırlamak için konum kısıtlaması kullanılmaktadır: merkezli 5.000 metre yarıçapındaki dairesel konum kısıtlaması:
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 kullan
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 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
İ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. Eğer harita gösteriyorsanız bu bir Google haritası olmalıdır. Şuradaki tahminleri görüntülediğinizde içermeyen Otomatik Tamamlama (Yeni) hizmetini arama alanında/sonuçlarında satır içinde görüntülenen Google logosunu içermelidir. Örneğin, Daha fazla bilgi için bkz. Google logosunu görüntüleme ve ilişkilendirmeleri.