يستخدم طلب البحث عن قرب (جديد) المنطقة المطلوب البحث فيها كدائرة، يتم تحديدها من خلال إحداثيي خط العرض وخط الطول للنقطة المركزية للدائرة ونصف القطر بالمتر. يعرض الطلب قائمة بالأماكن المطابقة، ويتم تمثيل كل منها بكائن
Place
،
داخل منطقة البحث المحدّدة.
بشكل تلقائي، يحتوي الردّ على جميع أنواع الأماكن داخل منطقة البحث. يمكنك اختياريًا فلترة الردّ من خلال تحديد قائمة بأنواع الأماكن لتضمينها بشكل صريح في الردّ أو استبعادها منه. على سبيل المثال، يمكنك تحديد تضمين تلك الأماكن فقط في الرد التي تكون من النوع "مطعم" و"مخبز" و "مقهى"، أو استبعاد جميع الأماكن من النوع "مدرسة".
طلبات البحث عن الأجهزة المجاورة (الجديدة)
يمكنك إجراء طلب "بحث عن قرب" (جديد) من خلال استدعاء
PlacesClient.searchNearby
،
وتمرير كائن
SearchNearbyRequest
يحدّد معلَمات الطلب.
يحدّد الكائن SearchNearbyRequest
جميع المعلمات المطلوبة والاختيارية للطلب. وتشمل المَعلمات المطلوبة ما يلي:
- تمثّل هذه السمة قائمة الحقول المطلوب عرضها في الكائن
Place
، ويُعرف أيضًا بقناع الحقل. إذا لم تحدد حقلاً واحدًا على الأقل في قائمة الحقول، أو إذا حذفت قائمة الحقول، فسيعرض الاستدعاء خطأ. - تقييد الموقع الجغرافي لمنطقة البحث، والذي يتم تعريفه على أنّه زوج من خطوط الطول/العرض وقيمة النطاق الجغرافي بالمتر.
يوضّح مثال طلب البحث القريب هذا أن كائنات Place
للاستجابة تحتوي على حقلَي المكان Place.Field.ID
وPlace.Field.NAME
لكل عنصر Place
في نتائج البحث. كما أنها تقوم بتصفية الاستجابة فقط
لإرجاع الأماكن من نوع "مطعم" و "مقهى"، ولكن تستبعد الأماكن من نوع
"مطعم_البيتزا" و "مطعم_أمريكا".
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the search area as a 1000 meter diameter circle in New York, NY. LatLng center = new LatLng(40.7580, -73.9855); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 1000); // Define a list of types to include. final List<String> includedTypes = Arrays.asList("restaurant", "cafe"); // Define a list of types to exclude. final List<String> excludedTypes = Arrays.asList("pizza_restaurant", "american_restaurant"); // Use the builder to create a SearchNearbyRequest object. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setExcludedTypes(excludedTypes) .setMaxResultCount(10) .build()); // Call placesClient.searchNearby() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
ردود البحث عن الأجهزة المجاورة (الجديدة)
تمثّل الفئة
SearchNearbyResponse
الاستجابة لطلب بحث. يحتوي كائن SearchNearbyResponse
على:
- قائمة تضم عناصر
Place
تمثل جميع الأماكن المطابقة، مع إضافة عنصرPlace
واحد لكل مكان مطابق. - يحتوي كل عنصر
Place
فقط على الحقول المحدّدة من خلال قائمة الحقول التي تم ضبطها في الطلب.
على سبيل المثال، في الطلب، حدَّدت قائمة حقول على النحو التالي:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
تعني قائمة الحقول هذه أنّ كل عنصر Place
في الردّ يحتوي فقط على رقم تعريف المكان واسم كل مكان مطابق. يمكنك بعد ذلك استخدام الطريقتين Place.getId()
وPlace.getName()
للوصول إلى هذه الحقول في كل كائن Place
.
للاطّلاع على مزيد من الأمثلة على الوصول إلى البيانات في عنصر Place
، يُرجى الاطّلاع على الوصول إلى حقول بيانات عنصر المكان.
المعلمات المطلوبة
استخدِم الكائن
SearchNearbyRequest
لتحديد المعلَمات المطلوبة للبحث.
قائمة الحقول
عند طلب تفاصيل مكان، عليك تحديد البيانات المطلوب عرضها في الكائن
Place
للمكان كقناع حقل. لتحديد قناع الحقل، مرِّر مصفوفة من القيم منPlace.Field
إلى الكائنSearchNearbyRequest
. يُعد الإخفاء الميداني ممارسة تصميم جيدة لضمان عدم طلب بيانات غير ضرورية، مما يساعد على تجنب وقت المعالجة ورسوم الفوترة غير الضرورية.حدِّد حقلاً واحدًا أو أكثر من الحقول التالية:
تؤدي الحقول التالية إلى تشغيل رمز التخزين التعريفي للبحث عن الأجهزة المجاورة (الأساسي):
Place.Field.ADDRESS_COMPONENTS
،Place.Field.BUSINESS_STATUS
،Place.Field.ADDRESS
،Place.Field.ICON_BACKGROUND_COLOR
،Place.Field.ICON_URL
،Place.Field.LAT_LNG
،Place.Field.PHOTO_METADATAS
،Place.Field.PLUS_CODE
،Place.Field.ID
،Place.Field.NAME
،Place.Field.TYPES
،Place.Field.UTC_OFFSET
،Place.Field.VIEWPORT
،Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
تؤدي الحقول التالية إلى تشغيل رمز التخزين التعريفي للبحث عن قرب (متقدم):
Place.Field.CURRENT_OPENING_HOURS
،Place.Field.SECONDARY_OPENING_HOURS
،Place.Field.PHONE_NUMBER
،Place.Field.PRICE_LEVEL
،Place.Field.RATING
،Place.Field.OPENING_HOURS
،Place.Field.USER_RATINGS_TOTAL
،Place.Field.WEBSITE_URI
تؤدي الحقول التالية إلى تشغيل رمز التخزين التعريفي للبحث عن قرب (المُفضَّل):
Place.Field.CURBSIDE_PICKUP
،Place.Field.DELIVERY
،Place.Field.DINE_IN
،Place.Field.EDITORIAL_SUMMARY
،Place.Field.RESERVABLE
،Place.Field.REVIEWS
،Place.Field.SERVES_BEER
،Place.Field.SERVES_BREAKFAST
،Place.Field.SERVES_BRUNCH
،Place.Field.SERVES_DINNER
،Place.Field.SERVES_LUNCH
،Place.Field.SERVES_VEGETARIAN_FOOD
،Place.Field.SERVES_WINE
،Place.Field.TAKEOUT
لضبط مَعلمة قائمة الحقول، يمكنك طلب الطريقة
setPlaceFields()
عند إنشاء كائنSearchNearbyRequest
.يحدّد المثال التالي قائمة من قيمتَي حقل لتحديد أنّ العنصر
Place
الذي يعرضه طلب يحتوي على الحقلَينPlace.Field.ID
وPlace.Field.NAME
:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
القيود المفروضة على الموقع الجغرافي
يشير ذلك المصطلح إلى كائن
LocationRestriction
يحدّد المنطقة المطلوب البحث فيها على أنّها دائرة، ويتم تحديدها حسب نقطة الوسط ونصف القطر بالمتر. يجب أن يكون النطاق الجغرافي بين أكبر من 0.0 وأقل من أو يساوي 50000.0، مع الأخذ في الاعتبار أنّ تحديد نطاق جغرافي صغير جدًا سيؤدي إلى عرضZERO_RESULTS
كاستجابة.لضبط مَعلمة تقييد الموقع الجغرافي، يمكنك استدعاء الطريقة
setLocationRestriction()
عند إنشاء كائنSearchNearbyRequest
.
المعلمات الاختيارية
استخدِم الكائن
SearchNearbyRequest
لتحديد المعلَمات الاختيارية للبحث.
-
الأنواع والأنواع الأساسية
تتيح لك هذه السمة تحديد قائمة بالأنواع من أنواع الجدول أ المستخدمة لفلترة نتائج البحث. يمكن تحديد ما يصل إلى 50 نوعًا في كل فئة من فئات القيود.
لا يمكن أن يحتوي المكان إلا على نوع أساسي واحد من أنواع الجدول أ المرتبطة به. على سبيل المثال، قد يكون النوع الأساسي
"mexican_restaurant"
أو"steak_house"
. استخدِمincludedPrimaryTypes
وexcludedPrimaryTypes
لفلترة النتائج حسب النوع الأساسي للمكان.يمكن أن يحتوي المكان أيضًا على قيم أنواع متعددة من أنواع الجدول أ المرتبطة به. على سبيل المثال، قد يتميّز مطعم بالأنواع التالية:
"seafood_restaurant"
و"restaurant"
و"food"
و"point_of_interest"
و"establishment"
. استخدِمincludedTypes
وexcludedTypes
لفلترة النتائج حسب قائمة الأنواع المرتبطة بأحد الأماكن.في حال تحديد عملية بحث مع أنواع متعددة من القيود، لن يتم عرض سوى الأماكن التي تستوفي جميع القيود. على سبيل المثال، إذا حددت
includedTypes = Arrays.asList("restaurant")
وexcludedPrimaryTypes = Arrays.asList("steak_house")
، تقدّم الأماكن المعروضة خدمات ذات صلة بـ"restaurant"
، ولكنها لا تعمل بشكل أساسي كـ"steak_house"
.للاطّلاع على مثال حول كيفية استخدام
includedTypes
وexcludedTypes
، يُرجى الاطّلاع على طلبات البحث عن الأجهزة المجاورة (الجديدة).الأنواع المضمّنة
قائمة بأنواع الأماكن من الجدول أ للبحث عنها. وفي حال حذف هذه المَعلمة، يتم عرض الأماكن بجميع أنواعها.
لضبط مَعلمة الأنواع المُضمنة، يمكنك طلب الطريقة
setIncludedTypes()
عند إنشاء عنصرSearchNearbyRequest
.الأنواع المستبعَدة
قائمة بأنواع الأماكن من الجدول أ لاستبعادها من عملية بحث.
إذا حدّدت كلاً من
includedTypes
(مثل"school"
) وexcludedTypes
(مثل"primary_school"
) في الطلب، سيتضمّن الردّ أماكن مصنّفة على أنّها"school"
وليس"primary_school"
. يتضمّن الردّ أماكن تطابق عنصرًا واحدًا على الأقل منincludedTypes
ولا شيء منexcludedTypes
.إذا كان هناك أي أنواع متضاربة، كظهور أحد الأنواع في كل من
includedTypes
وexcludedTypes
، سيتم عرض الخطأINVALID_REQUEST
.لضبط مَعلمة الأنواع المُستبعَدة، يمكنك طلب الطريقة
setExcludedTypes()
عند إنشاء كائنSearchNearbyRequest
.الأنواع الأساسية المضمّنة
قائمة بأنواع الأماكن الأساسية من الجدول أ لتضمينها في البحث.
لضبط مَعلمة الأنواع الأساسية المضمَّنة، يجب طلب الطريقة
setIncludedPrimaryTypes()
عند إنشاء عنصرSearchNearbyRequest
.الأنواع الأساسية المستبعدة
قائمة بأنواع الأماكن الأساسية من الجدول أ لاستبعادها من عملية بحث.
إذا كان هناك أي أنواع أساسية متعارضة، مثل ظهور أحد الأنواع في كل من
includedPrimaryTypes
وexcludedPrimaryTypes
، سيتم عرض الخطأINVALID_ARGUMENT
.لضبط مَعلمة الأنواع الأساسية المستبعدة، يمكنك طلب الطريقة
setExcludedPrimaryTypes()
عند إنشاء عنصرSearchNearbyRequest
. -
الحد الأقصى لعدد النتائج
لتحديد الحد الأقصى لعدد نتائج الأماكن المطلوب عرضها. ويجب أن تتراوح القيمة بين 1 و20 (القيمة التلقائية).
لضبط مَعلمة الحد الأقصى لعدد النتائج، يمكنك طلب الطريقة
setMaxResultCount()
عند إنشاء كائنSearchNearbyRequest
. -
الترتيب المفضّل
نوع الترتيب المطلوب استخدامه. في حال إسقاط هذه المَعلمة، يتم ترتيب النتائج حسب مدى رواجها. قد يكون واحدًا مما يلي:
- "
POPULARITY
" (الخيار التلقائي) يساعد في ترتيب النتائج استنادًا إلى مدى رواجها. DISTANCE
يؤدي الترتيب إلى ترتيب تصاعدي حسب المسافة من الموقع الجغرافي المحدد.
لضبط مَعلمة الترتيب المفضّلة، يجب طلب الطريقة
setRankPreference()
عند إنشاء كائنSearchNearbyRequest
. - "
-
رمز المنطقة
تمثّل هذه السمة رمز المنطقة المستخدَم لتنسيق الاستجابة، ويتم تحديده كقيمة رمز CLDR مؤلف من حرفَين. لا يوجد قيمة افتراضية.
إذا كان اسم البلد في الحقل
formattedAddress
في الردّ يتطابق معregionCode
، سيتم حذف رمز البلد منformattedAddress
.وتكون معظم رموز CLDR متطابقة مع رموز ISO 3166-1، مع بعض الاستثناءات الملحوظة. على سبيل المثال، نطاق المستوى الأعلى الذي يتم ترميزه حسب البلد (ccTLD) في المملكة المتحدة هو uk. (co.uk). في حين أنّ رمز ISO 3166-1 الخاص بها هو gb (من الناحية التقنية، تشير وحدة "المملكة المتحدة لبريطانيا العظمى وأيرلندا الشمالية"). ويمكن أن تؤثّر المَعلمة في النتائج استنادًا إلى القانون الساري.
لضبط مَعلمة رمز المنطقة، يجب طلب الطريقة
setRegionCode()
عند إنشاء عنصرSearchNearbyRequest
.
عرض عمليات تحديد المصدر في تطبيقك
عندما يعرض تطبيقك معلومات تم الحصول عليها من
PlacesClient
،
مثل الصور والمراجعات، يجب أن يعرض التطبيق أيضًا سمات المساهمين المطلوبة.
لمزيدٍ من المعلومات، يُرجى الاطّلاع على حزمة تطوير البرامج (SDK) الخاصة بسياسات الأماكن لنظام التشغيل Android.