تعرض خدمة "الإكمال التلقائي" (جديدة) توقعات للأماكن استجابةً لطلب يتضمّن سلسلة بحث نصية وحدودًا جغرافية تتحكّم في مساحة البحث. يمكن أن تتطابق ميزة الإكمال التلقائي مع الكلمات الكاملة والسلاسل الفرعية من الإدخال، ما يؤدي إلى تحديد أسماء الأماكن والعناوين والرموز الإضافية. يمكن لتطبيقك إرسال طلبات بحث أثناء كتابة المستخدم، وذلك لتقديم توقعات فورية بشأن الأماكن وطلبات البحث.
على سبيل المثال، يمكنك طلب الإكمال التلقائي باستخدام سلسلة كإدخال تتضمّن جزءًا من إدخال المستخدم، مثل "بيتزا صقلية"، مع حصر منطقة البحث في سان فرانسيسكو، كاليفورنيا. تحتوي الاستجابة بعد ذلك على قائمة بتوقّعات الأماكن التي تطابق سلسلة البحث ومنطقة البحث، مثل المطعم الذي يحمل اسم "Sicilian Pizza Kitchen". تم تصميم توقعات الأماكن التي يتم عرضها لمساعدة المستخدم في اختيار المكان المطلوب. يمكنك إرسال طلب تفاصيل المكان (جديد) للحصول على مزيد من المعلومات حول أي من توقعات الأماكن التي تم عرضها.
يمكنك دمج وظيفة "الإكمال التلقائي (جديد)" في تطبيقك بطريقتَين رئيسيتَين:
- إضافة أداة Place Autocomplete:
توفّر تجربة إكمال تلقائي للبحث جاهزة للاستخدام من خلال الفئة
PlaceAutocomplete
التي تعرض النتائج المقترَحة أثناء كتابة المستخدم. - الحصول على توقّعات الأماكن آليًا: يمكنك طلب البيانات من واجهة برمجة التطبيقات مباشرةً لاسترداد التوقّعات وعرضها في واجهة مستخدم مخصّصة.
إضافة أداة الإكمال التلقائي للأماكن
لتوفير تجربة متسقة لإكمال البيانات تلقائيًا بشأن الأماكن بسهولة أكبر، يمكنك إضافة أداة Place Autocomplete إلى تطبيقك. توفّر الأداة واجهة مخصّصة بملء الشاشة تعالج إدخالات المستخدم وتعرض توقعات الأماكن للمستخدم مع عرض عناصر AutocompletePrediction
للتطبيق. يمكنك بعد ذلك إرسال طلب تفاصيل المكان (جديد) للحصول على معلومات إضافية حول أي من توقعات الأماكن.
كما هو الحال عند الحصول على توقّعات الأماكن آليًا، يتيح لك عنصر واجهة المستخدم "الإكمال التلقائي للأماكن" استخدام رموز الجلسات لتجميع طلبات الإكمال التلقائي في جلسة واحدة لأغراض الفوترة. يمكنك تمرير رمز مميّز للجلسة عند إنشاء الغرض من الأداة من خلال استدعاء setAutocompleteSessionToken()
. إذا لم تقدّم رمزًا مميّزًا للجلسة، ستنشئ لك الأداة رمزًا مميّزًا يمكنك الوصول إليه من خلال استدعاء getSessionTokenFromIntent()
. لمزيد من المعلومات عن استخدام رموز الجلسات، راجِع مقالة لمحة عن رموز الجلسات.
لإضافة أداة الإكمال التلقائي للأماكن إلى تطبيقك، اتّبِع الخطوات التالية:
(اختياري) حدِّد رمزًا مميزًا للجلسة. إذا لم تقدّم رمزًا مميّزًا للجلسة، ستنشئ الأداة رمزًا لك.
حدِّد
autocompleteIntent
مع المَعلمات المطلوبة ورمز الجلسة.حدِّد
ActivityResultLauncher
لـStartActivityForResult
. سيتعامل مشغّل التطبيق هذا مع النتيجة التي يتم عرضها من نشاط الإكمال التلقائي.تعامَل مع النتيجة في معاودة الاتصال الخاصة بـ
ActivityResultLauncher
. يتضمّن ذلك استخراجAutocompletePrediction
وAutocompleteSessionToken
(إذا لم تقدّمها)، والتعامل مع الأخطاء، وإجراء طلبfetchPlace()
اختياريًا للحصول على تفاصيل إضافية حول مكان.تشغيل الغرض باستخدام
placeAutocompleteActivityResultLauncher
توضّح النماذج التالية كيفية إضافة أداة Place Autocomplete باستخدام كل من Kotlin وJava:
Kotlin
// Provide the API key that has enabled "Places API (New)" in the Google Cloud Console. Places.initializeWithNewPlacesApiEnabled(/* Context= */ context, /* API Key= */ key) // Optional, create a session token for Autocomplete request and the followup FetchPlace request. val sessionToken: AutocompleteSessionToken = AutocompleteSessionToken.newInstance() val autocompleteIntent: Intent = PlaceAutocomplete.createIntent(this) { // ... provide input params for origin, countries, types filter ... setAutocompleteSessionToken(sessionToken) } val placeAutocompleteActivityResultLauncher: ActivityResultLauncher<Intent> = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult -> val intent = result.data if (intent != null && result.resultCode == PlaceAutocompleteActivity.RESULT_OK) { // get prediction object val prediction: AutocompletePrediction? = PlaceAutocomplete.getPredictionFromIntent(intent!!) // get session token val sessionToken: AutocompleteSessionToken? = PlaceAutocomplete.getSessionTokenFromIntent(intent!!) // create PlacesClient to make FetchPlace request (optional) val placesClient: PlacesClient = Places.createClient(this) val response = placesClient.awaitFetchPlace(prediction.placeId, Field.DISPLAY_NAME) { sessionToken = sessionToken // optional } } } // Launch Activity placeAutocompleteActivityResultLauncher.launch(autocompleteIntent)
Java
// Provide the API key that has enabled "Places API (New)" in the Google Cloud Console. Places.initializeWithNewPlacesApiEnabled(/* Context= */ context, /* API Key= */ key); // Optional, create a session token for Autocomplete request and the followup FetchPlace request AutocompleteSessionToken sessionToken = AutocompleteSessionToken.newInstance(); Intent autocompleteIntent = new PlaceAutocomplete.IntentBuilder() // ... set input params for origin, countries, types filter ... .setSessionToken(sessionToken) // optional .build(this); ActivityResultLauncher<Intent> placeAutocompleteActivityResultLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() { @Override public void onActivityResult(ActivityResult result) { Intent intent = result.getData(); if (result.getResultCode() == PlaceAutocompleteActivity.RESULT_OK) { // get prediction object AutocompletePrediction prediction = PlaceAutocomplete.getPredictionFromIntent( Preconditions.checkNotNull(intent)); // get session token AutocompleteSessionToken sessionToken = PlaceAutocomplete.getSessionTokenFromIntent( Preconditions.checkNotNull(intent)); // create PlacesClient to make FetchPlace request (optional) PlacesClient placesClient = Places.createClient(this); FetchPlaceRequest request = FetchPlaceRequest.builder(prediction.getPlaceId(), Arrays.asList(Field.DISPLAY_NAME)) .setSessionToken(sessionToken).build(); Task<FetchPlaceResponse> task = placesClient.fetchPlace(request); } } } ); // Launch Activity placeAutocompleteActivityResultLauncher.launch(autocompleteIntent);
الحصول على توقّعات للأماكن آليًا
يمكن لتطبيقك الحصول على قائمة بأسماء الأماكن و/أو العناوين المتوقّعة من واجهة برمجة التطبيقات الخاصة بالإكمال التلقائي من خلال طلب PlacesClient.findAutocompletePredictions()
، وتمرير عنصر FindAutocompletePredictionsRequest
. يعرض المثال أدناه طلبًا كاملاً إلى
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()); }) );
ردود الإكمال التلقائي (جديدة)
تعرض واجهة برمجة التطبيقات
FindAutocompletePredictionsResponse
في
Task
.
يحتوي
FindAutocompletePredictionsResponse
على قائمة تضم ما يصل إلى خمسة عناصر
AutocompletePrediction
تمثّل الأماكن المتوقّعة. قد تكون القائمة فارغة إذا لم يكن هناك مكان معروف يتطابق مع طلب البحث ومعايير الفلتر.
يمكنك استدعاء الطرق التالية لاسترداد تفاصيل المكان لكل مكان متوقّع:
- تعرض السمة
getFullText(CharacterStyle)
النص الكامل لوصف المكان. هذا هو مزيج من النص الأساسي والثانوي. مثال: "برج إيفل، شارع أناتول فرانس، باريس، فرنسا". بالإضافة إلى ذلك، يتيح لك هذا الإجراء تمييز أقسام الوصف التي تتطابق مع البحث باستخدام نمط من اختيارك، وذلك باستخدامCharacterStyle
. المَعلمةCharacterStyle
اختيارية. اضبط القيمة على null إذا لم تكن بحاجة إلى أي تمييز. - تعرض السمة
getPrimaryText(CharacterStyle)
النص الرئيسي الذي يصف مكانًا. عادةً ما يكون هذا هو اسم المكان. أمثلة: "برج إيفل" و "123 شارع بيت". - تعرض السمة
getSecondaryText(CharacterStyle)
النص الفرعي لوصف مكان. ويكون ذلك مفيدًا، على سبيل المثال، كسطر ثانٍ عند عرض توقّعات الإكمال التلقائي. أمثلة: "Avenue Anatole France, Paris, France" و "Sydney, New South Wales". - تعرض
getPlaceId()
معرّف المكان المتوقّع. معرّف المكان هو معرّف نصي يحدّد مكانًا بشكل فريد، ويمكنك استخدامه لاسترداد الكائنPlace
مرة أخرى لاحقًا. لمزيد من المعلومات حول معرّفات الأماكن في ميزة "الإكمال التلقائي"، راجِع تفاصيل المكان (الإصدار الجديد). للحصول على معلومات عامة حول معرّفات الأماكن، راجِع نظرة عامة حول معرّف المكان. - تعرض
getTypes()
قائمة بأنواع الأماكن المرتبطة بهذا المكان. - تعرض
getDistanceMeters()
المسافة بين هذا المكان والمصدر المحدّد في الطلب، وذلك بوحدة المتر.
المعلمات المطلوبة
-
طلب البحث
سلسلة النص المطلوب البحث عنها. حدِّد الكلمات الكاملة والسلاسل الفرعية وأسماء الأماكن والعناوين ورموز المواقع المفتوحة. تعرض خدمة "الاقتراحات التلقائية" (الجديدة) نتائج مطابقة محتملة استنادًا إلى هذه السلسلة، وترتّب النتائج استنادًا إلى مدى صلتها بموضوع البحث.
لضبط مَعلمة طلب البحث، استدعِ طريقة
setQuery()
عند إنشاء العنصرFindAutocompletePredictionsRequest
.
المعلمات الاختيارية
-
الأنواع الأساسية
قائمة تضمّ ما يصل إلى خمس قيم من النوع type من الجدول أ أو الجدول ب، وتُستخدَم لفلترة الأماكن التي يتم عرضها في الردّ. يجب أن يتطابق المكان مع إحدى قيم النوع الأساسي المحدّدة ليتم تضمينه في الردّ.
يمكن أن يكون للمكان نوع أساسي واحد فقط من الأنواع المرتبطة به في الجدول (أ) أو الجدول (ب). على سبيل المثال، قد يكون النوع الأساسي
"mexican_restaurant"
أو"steak_house"
.يتم رفض الطلب مع ظهور الخطأ
INVALID_REQUEST
في الحالات التالية:- تم تحديد أكثر من خمسة أنواع.
- يتم تحديد أي أنواع غير معروفة.
لضبط مَعلمة الأنواع الأساسية، استدعِ طريقة
setTypesFilter()
عند إنشاء الكائنFindAutocompletePredictionsRequest
. -
البلدان
لا تضمِّن سوى النتائج من قائمة البلدان المحدّدة، والتي يتم تحديدها كقائمة تتضمّن ما يصل إلى 15 قيمة لنطاق المستوى الأعلى الذي يتم ترميزه حسب البلد مؤلّفة من حرفين. في حال عدم تضمينها، لن يتم تطبيق أي قيود على الرد. على سبيل المثال، لتقييد المناطق بألمانيا وفرنسا:
في حال تحديد كلّ من
locationRestriction
وincludedRegionCodes
، ستظهر النتائج في المنطقة المشتركة بين الإعدادَين.لضبط مَعلمة البلدان، استدعِ طريقة
setCountries()
عند إنشاء العنصرFindAutocompletePredictionsRequest
. -
إزاحة الإدخال
إزاحة حرف Unicode المستندة إلى الصفر والتي تشير إلى موضع المؤشر في طلب البحث يمكن أن يؤثّر موضع المؤشر في التوقّعات التي يتم عرضها. إذا كان الحقل فارغًا، يتم ضبط القيمة التلقائية على طول طلب البحث.
لضبط مَعلمة إزاحة الإدخال، استدعِ طريقة
setInputOffset()
عند إنشاء الكائنFindAutocompletePredictionsRequest
. تحيّز الموقع الجغرافي أو القيود المفروضة على الموقع الجغرافي
يمكنك تحديد تحيّز الموقع الجغرافي أو قيود الموقع الجغرافي، ولكن ليس كليهما، لتحديد منطقة البحث. يمكنك اعتبار قيد الموقع الجغرافي بمثابة تحديد المنطقة التي يجب أن تقع النتائج ضمنها، بينما يمكنك اعتبار تحيّز الموقع الجغرافي بمثابة تحديد المنطقة التي يجب أن تكون النتائج قريبة منها. ويكمن الاختلاف الرئيسي في أنّه مع التحيز حسب الموقع الجغرافي، قد يتم عرض نتائج من خارج المنطقة المحدّدة.
الانحياز حسب الموقع الجغرافي
تحدّد هذه السمة منطقة للبحث. ويشكّل هذا الموقع الجغرافي عامل تحيّز وليس قيدًا، لذا قد يتم عرض نتائج من خارج المنطقة المحدّدة.
لضبط مَعلمة "تحيّز الموقع الجغرافي"، استدعِ طريقة
setLocationBias()
عند إنشاء العنصرFindAutocompletePredictionsRequest
.قيود الموقع الجغرافي
تحدّد هذه السمة منطقة للبحث. لن يتم عرض نتائج خارج المنطقة المحدّدة.
لضبط مَعلمة تقييد الموقع الجغرافي، استدعِ طريقة
setLocationRestriction()
عند إنشاء العنصرFindAutocompletePredictionsRequest
.
حدِّد منطقة التحيز حسب الموقع الجغرافي أو منطقة القيود المفروضة على الموقع الجغرافي على شكل إطار عرض مستطيل أو دائرة.
يتم تحديد الدائرة من خلال نقطة مركزية ونصف قطر بالأمتار. يجب أن يتراوح نصف القطر بين 0.0 و50000.0، بما في ذلك هذان الرقمَان. القيمة التلقائية هي 0.0. بالنسبة إلى قيود الموقع الجغرافي، يجب ضبط النطاق الجغرافي على قيمة أكبر من 0.0. وفي حال عدم توفّرها، لن يعرض الطلب أي نتائج.
المستطيل هو إطار عرض لخطوط الطول والعرض، ويتم تمثيله كنقطتَين
low
وhigh
متقابلتَين قطريًا. يُعدّ إطار العرض منطقة مغلقة، ما يعني أنّه يشمل حدوده. يجب أن تتراوح حدود خط العرض بين 90- و90 درجة شاملة، ويجب أن تتراوح حدود خط الطول بين 180- و180 درجة شاملة:- إذا كان
low
=high
، يتألف إطار العرض من تلك النقطة الواحدة. - إذا كانت قيمة
low.longitude
أكبر منhigh.longitude
، يكون نطاق خط الطول معكوسًا (أي أنّ إطار العرض يتقاطع مع خط الطول 180 درجة). - إذا كانت
low.longitude
= -180 درجة وhigh.longitude
= 180 درجة، يعني ذلك أنّ إطار العرض يتضمّن جميع خطوط الطول. - إذا كانت
low.longitude
= 180 درجة وhigh.longitude
= -180 درجة، يكون نطاق خط الطول فارغًا.
يجب ملء كل من
low
وhigh
، ويجب ألا يكون المربع الممثَّل فارغًا. يؤدي عرض نافذة فارغة إلى حدوث خطأ.- إذا كان
-
الأصل
نقطة البداية التي يتم منها حساب المسافة المستقيمة إلى الوجهة (يتم الوصول إليها باستخدام
getDistanceMeters()
). إذا تم حذف هذه القيمة، لن يتم عرض المسافة المستقيمة. يجب تحديدها على النحو التالي: إحداثيات خطوط الطول والعرض:لضبط مَعلمة المصدر، استخدِم الطريقة
setOrigin()
عند إنشاء العنصرFindAutocompletePredictionsRequest
. -
رمز المنطقة
تمثّل هذه السمة رمز المنطقة المستخدَم لتنسيق الردّ، بما في ذلك تنسيق العنوان، ويتم تحديدها كقيمة مكوّنة من حرفَين ccTLD ("نطاق المستوى الأعلى"). معظم رموز نطاقات المستوى الأعلى لرمز البلد تتطابق مع رموز ISO 3166-1، مع بعض الاستثناءات البارزة. على سبيل المثال، نطاق المستوى الأعلى لرمز البلد في المملكة المتحدة هو "uk" (.co.uk)، بينما رمز ISO 3166-1 هو "gb" (وهو يشير تقنيًا إلى الكيان "المملكة المتحدة لبريطانيا العظمى وأيرلندا الشمالية").
إذا حدّدت رمز منطقة غير صالح، ستعرض واجهة برمجة التطبيقات رسالة الخطأ
INVALID_ARGUMENT
. يمكن أن تؤثّر المَعلمة في النتائج استنادًا إلى القانون الساري.لضبط مَعلمة رمز المنطقة، استدعِ طريقة
setRegionCode()
عند إنشاء العنصرFindAutocompletePredictionsRequest
. -
الرمز المميز للجلسة
رموز الجلسات هي سلاسل من الأحرف والأرقام ينشئها المستخدمون لتتبُّع طلبات الإكمال التلقائي (الجديدة)، أي الطلبات التي يتم إجراؤها من خلال الأداة والطلبات الآلية، على أنّها "جلسات". تستخدم ميزة "الإكمال التلقائي" رموز الجلسات المميزة لتجميع مراحل طلب البحث والاختيار في عملية بحث الإكمال التلقائي التي يجريها المستخدم في جلسة منفصلة لأغراض الفوترة. تبدأ الجلسة عندما يبدأ المستخدم في كتابة طلب بحث، وتنتهي عندما يختار مكانًا. يمكن أن تتضمّن كل جلسة طلبات بحث متعددة، يليها اختيار مكان واحد. بعد انتهاء الجلسة، لن يكون الرمز المميز صالحًا، ويجب أن ينشئ تطبيقك رمزًا مميزًا جديدًا لكل جلسة. ننصح باستخدام رموز مميّزة للجلسات في جميع جلسات الإكمال التلقائي الآلية (عند تضمين جزء أو تشغيل الإكمال التلقائي باستخدام هدف، تتولّى واجهة برمجة التطبيقات ذلك تلقائيًا).
تستخدِم ميزة "الإكمال التلقائي"
AutocompleteSessionToken
لتحديد كل جلسة. يجب أن يمرِّر تطبيقك رمزًا مميزًا جديدًا للجلسة عند بدء كل جلسة جديدة، ثم يمرِّر الرمز المميز نفسه مع معرّف المكان في الاتصال اللاحق بـfetchPlace()
لاسترداد "تفاصيل المكان" للمكان الذي اختاره المستخدم.لضبط مَعلمة رمز الجلسة، استدعِ طريقة
setSessionToken()
عند إنشاء الكائنFindAutocompletePredictionsRequest
.لمزيد من المعلومات، يُرجى الاطّلاع على رموز الجلسات المميزة.
أمثلة على الإكمال التلقائي (جديد)
استخدام قيود الموقع الجغرافي وميزة "تفضيل الموقع الجغرافي"
تستخدم ميزة "الإكمال التلقائي" (الجديدة) ميزة "تحديد الموقع الجغرافي حسب عنوان IP" تلقائيًا للتحكّم في منطقة البحث. باستخدام ميزة "تفضيل عنوان IP"، تستخدم واجهة برمجة التطبيقات عنوان IP الخاص بالجهاز لتفضيل النتائج. يمكنك اختياريًا استخدام قيود الموقع الجغرافي أو تحيّز الموقع الجغرافي، ولكن ليس كليهما، لتحديد منطقة البحث.
يحدّد قيد الموقع الجغرافي المنطقة المطلوب البحث فيها. لا يتم عرض النتائج خارج المنطقة المحدّدة. يستخدم المثال التالي قيود الموقع الجغرافي لحصر الطلب في قيود موقع جغرافي دائرية بنطاق 5,000 متر متمركزة في سان فرانسيسكو:
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()); }) );
في حالة التحيز للموقع الجغرافي، يعمل الموقع الجغرافي كتحيز، ما يعني أنّه يمكن عرض نتائج حول الموقع الجغرافي المحدّد، بما في ذلك النتائج خارج المنطقة المحدّدة. يغيّر المثال التالي الطلب السابق لاستخدام ميزة "تحسين الموقع الجغرافي":
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()); }) );
استخدام الأنواع الأساسية
استخدِم المَعلمة primary types لحصر النتائج من طلب بحث على نوع معيّن كما هو موضّح في الجدول أ والجدول ب. يمكنك تحديد مصفوفة تتضمّن ما يصل إلى خمس قيم. في حال الحذف، يتم عرض جميع الأنواع.
يحدّد المثال التالي سلسلة طلب بحث "كرة القدم" ويستخدم المَعلمة primary
types لحصر النتائج على المؤسسات من النوع
"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()); }) );
في حال حذف مَعلمة الأنواع الأساسية، يمكن أن تتضمّن النتائج مؤسسات من نوع قد لا تريده، مثل "athletic_field"
.
استخدام المصدر
عند تضمين المَعلمة origin في الطلب، والمحدّدة كإحداثيات خطوط الطول والعرض، تتضمّن واجهة برمجة التطبيقات المسافة المستقيمة من نقطة البداية إلى الوجهة في الردّ (يمكن الوصول إليها باستخدام getDistanceMeters()
). يضبط هذا المثال نقطة البداية على وسط سان فرانسيسكو:
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()); }) );