يأخذ طلب "بحث في الجوار (جديد)" المنطقة المطلوب البحث فيها كإدخال، ويتم تحديدها على شكل دائرة، ويتم تعريفها من خلال إحداثيات خطوط الطول والعرض لنقطة مركز الدائرة ونصف القطر بالأمتار. يعرض
الطلب قائمة بالأماكن المطابقة، ويمثّل كل مكان بكائن
Place
ضمن منطقة البحث المحدّدة.
تلقائيًا، تحتوي الاستجابة على أماكن من جميع الأنواع ضمن منطقة البحث. يمكنك اختياريًا فلترة الاستجابة عن طريق تحديد قائمة بأنواع الأماكن لتضمينها أو استبعادها بشكل صريح من الاستجابة. على سبيل المثال، يمكنك تحديد تضمين الأماكن من النوع "مطعم" و"مخبز" و"مقهى" فقط في الاستجابة، أو استبعاد جميع الأماكن من النوع "مدرسة".
طلبات "بحث في الجوار (جديد)"
يمكنك إجراء طلب "بحث في الجوار (جديد)" عن طريق استدعاء
PlacesClient.searchNearby،
مع تمرير كائن
SearchNearbyRequest
يحدّد مَعلمات الطلب.
يحدّد كائن SearchNearbyRequest جميع المَعلمات المطلوبة والاختيارية للطلب. تشمل المَعلمات المطلوبة ما يلي:
- قائمة الحقول المطلوب عرضها في كائن
Place، والتي تُعرف أيضًا باسم قناع الحقل. إذا لم تحدّد حقلًا واحدًا على الأقل في قائمة الحقول، أو إذا حذفت قائمة الحقول، سيعرض الاستدعاء خطأً. - قيد الموقع الجغرافي لمنطقة البحث، ويتم تحديده على شكل زوج من خطوط الطول والعرض وقيمة نصف القطر بالأمتار.
يحدّد طلب البحث في الجوار هذا أن تحتوي كائنات Place في الاستجابة
على حقول المكان Place.Field.ID وPlace.Field.DISPLAY_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.DISPLAY_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. يُعدّ إخفاء الحقول ممارسة تصميم جيدة لضمان عدم طلب بيانات غير ضرورية، ما يساعد في تجنُّب وقت المعالجة ورسوم الفوترة غير الضرورية.حدِّد حقلًا واحدًا أو أكثر من الحقول التالية:
تؤدي الحقول التالية إلى تفعيل بحث في الجوار Pro SKU:
Place.Field.ADDRESS_COMPONENTS
Place.Field.BUSINESS_STATUS
Place.Field.ADDRESS
Place.Field.DISPLAY_NAME>*
* استخدِم هذا الحقل بدلاً منPlace.Field.NAME، الذي تم إيقافه.
Place.Field.ICON_BACKGROUND_COLOR
Place.Field.ICON_MASK_URL*
* استخدِم هذا الحقل بدلاً منPlace.Field.ICON_URL، الذي تم إيقافه.
Place.Field.ID
Place.Field.LAT_LNG
Place.Field.PHOTO_METADATAS
Place.Field.PLUS_CODE
Place.Field.PRIMARY_TYPE
Place.Field.PRIMARY_TYPE_DISPLAY_NAME
Place.Field.RESOURCE_NAME
Place.Field.TYPES
Place.Field.UTC_OFFSET
Place.Field.VIEWPORT
Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCEتؤدي الحقول التالية إلى تفعيل بحث في الجوار رزمة الشركات رمز التخزين التعريفي:
Place.Field.CURRENT_OPENING_HOURS
Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_PHONE_NUMBER*
* استخدِم هذا الحقل بدلاً منPlace.Field.PHONE_NUMBER، الذي تم إيقافه.
Place.Field.NATIONAL_PHONE_NUMBER
Place.Field.OPENING_HOURS
Place.Field.PRICE_LEVEL
Place.Field.RATING
Place.Field.SECONDARY_OPENING_HOURS
Place.Field.USER_RATING_COUNT*
* استخدِم هذا الحقل بدلاً منPlace.Field.USER_RATINGS_TOTAL، الذي تم إيقافه.
Place.Field.WEBSITE_URIتؤدي الحقول التالية إلى تفعيل بحث في الجوار Enterprise Plus SKU:
Place.Field.ALLOWS_DOGS
Place.Field.CURBSIDE_PICKUP
Place.Field.DELIVERY
Place.Field.DINE_IN
Place.Field.EDITORIAL_SUMMARY
Place.Field.EV_CHARGE_OPTIONS
Place.Field.FUEL_OPTIONS
Place.Field.GOOD_FOR_CHILDREN
Place.Field.GOOD_FOR_GROUPS
Place.Field.GOOD_FOR_WATCHING_SPORTS
Place.Field.LIVE_MUSIC
Place.Field.MENU_FOR_CHILDREN
Place.Field.OUTDOOR_SEATING
Place.Field.PARKING_OPTIONS
Place.Field.PAYMENT_OPTIONS
Place.Field.RESERVABLE
Place.Field.RESTROOM
Place.Field.REVIEWS
Place.Field.SERVES_BEER
Place.Field.SERVES_BREAKFAST
Place.Field.SERVES_BRUNCH
Place.Field.SERVES_COCKTAILS
Place.Field.SERVES_COFFEE
Place.Field.SERVES_DESSERT
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.DISPLAY_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.DISPLAY_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لفلترة النتائج حسب قائمة الأنواع المرتبطة بـ مكان.عند تحديد نوع أساسي عام، مثل
"restaurant"أو"hotel"، يمكن أن تحتوي الاستجابة على أماكن ذات نوع أساسي أكثر تحديدًا من النوع المحدّد. على سبيل المثال، يمكنك تحديد تضمين نوع أساسي هو"restaurant". يمكن أن تحتوي الاستجابة بعد ذلك على أماكن ذات نوع أساسي هو"restaurant"، ولكن يمكن أن تحتوي الاستجابة أيضًا على أماكن ذات نوع أساسي أكثر تحديدًا، مثل"chinese_restaurant"أو"seafood_restaurant".إذا تم تحديد عملية بحث تتضمّن قيودًا متعددة على الأنواع، لا يتم عرض سوى الأماكن التي تستوفي جميع القيود. على سبيل المثال، إذا حدّدت
includedTypes = Arrays.asList("restaurant")وexcludedPrimaryTypes = Arrays.asList("steak_house")، تقدّم الأماكن المعروضة خدمات ذات صلة بـ"restaurant"ولكنها لا تعمل بشكل أساسي كـ"steak_house".للاطّلاع على مثال حول كيفية استخدام
includedTypesوexcludedTypes، يُرجى الاطّلاع على طلبات "بحث في الجوار (جديد)".الأنواع المضمّنة
قائمة بأنواع الأماكن من الجدول "الأنواع - الجدول أ" المطلوب البحث عنها. إذا تم حذف هذه المَعلمة، يتم عرض أماكن من جميع الأنواع.
لضبط مَعلمة الأنواع المضمّنة، استدعِ الطريقة
setIncludedTypes()عند إنشاء كائنSearchNearbyRequest.أنواع الاستبعاد
قائمة بأنواع الأماكن من الجدول "الأنواع - الجدول أ" المطلوب استبعادها من عملية البحث.
إذا حدّدت كلاً من
includedTypes(مثل"school") وexcludedTypes(مثل"primary_school") في الطلب، ستتضمّن الاستجابة الأماكن المصنّفة على أنّها"school"ولكن ليس"primary_school". تتضمّن الاستجابة الأماكن التي تطابق واحدًا على الأقل من theincludedTypesولا تطابق أيًا من theexcludedTypes.إذا كانت هناك أي أنواع متعارضة، مثل ظهور نوع في كل من
includedTypesوexcludedTypes، يتم عرض الخطاءINVALID_REQUEST.لضبط مَعلمة أنواع الاستبعاد، استدعِ الطريقة
setExcludedTypes()عند إنشاء كائنSearchNearbyRequest.الأنواع الأساسية المضمّنة
قائمة بأنواع الأماكن الأساسية من الجدول "الأنواع - الجدول أ" المطلوب تضمينها في عملية البحث.
لضبط مَعلمة الأنواع الأساسية المضمّنة، استدعِ الطريقة
setIncludedPrimaryTypes()عند إنشاء كائنSearchNearbyRequest.الأنواع الأساسية المستبعَدة
قائمة بأنواع الأماكن الأساسية من الجدول أ المطلوب استبعادها من عملية البحث.
إذا كانت هناك أي أنواع أساسية متعارضة، مثل ظهور نوع في كل من
includedPrimaryTypesوexcludedPrimaryTypes, يتم عرض الخطأINVALID_ARGUMENT.لضبط مَعلمة الأنواع الأساسية المستبعَدة، استدعِ الط0}
setExcludedPrimaryTypes()عند إنشاء كائنSearchNearbyRequest. -
الحد الأقصى لعدد النتائج
يحدّد الحد الأقصى لعدد نتائج الأماكن المطلوب عرضها. يجب أن يكون هذا العدد بين 1 و20 (تلقائيًا)، ضِمنًا.
لضبط مَعلمة الحد الأقصى لعدد النتائج، استدعِ الطريقة
setMaxResultCount()عند إنشاء كائنSearchNearbyRequest. -
الخيار المفضّل للترتيب
نوع الترتيب المطلوب استخدامه. إذا تم حذف هذه المَعلمة، يتم ترتيب النتائج حسب مدى رواجها. يمكن أن تكون هذه المَعلمة إحدى القيم التالية:
POPULARITY(تلقائي) يتم ترتيب النتائج حسب مدى رواجها.DISTANCEيتم ترتيب النتائج بترتيب تصاعدي حسب المسافة من الموقع الجغرافي المحدّد.
لضبط مَعلمة الخيار المفضّل للترتيب، استدعِ الطريقة
setRankPreference()عند إنشاء كائنSearchNearbyRequest. -
رمز المنطقة
رمز المنطقة المستخدَم لتنسيق الاستجابة، ويتم تحديده كـ قيمة رمز CLDR مكوّنة من حرفَين. ليس هناك قيمة تلقائية.
إذا كان اسم البلد في الحقل
FORMATTED_ADDRESSفي الاستجابة يطابقregionCode، يتم حذف رمز البلد منFORMATTED_ADDRESS.تتطابق معظم رموز CLDR مع رموز ISO 3166-1، مع بعض الاستثناءات البارزة. على سبيل المثال، النطاق الأعلى مستوى لرمز البلد في المملكة المتحدة هو "uk" (.co.uk)، بينما رمز ISO 3166-1 هو "gb" (من الناحية الفنية، يشير إلى كيان "المملكة المتحدة لبريطانيا العظمى وأيرلندا الشمالية"). يمكن أن تؤثر هذه المَعلمة في النتائج استنادًا إلى القانون الساري.
لضبط مَعلمة رمز المنطقة، استدعِ الطريقة
setRegionCode()عند إنشاء كائنSearchNearbyRequest.
عرض بيانات تحديد المصدر في تطبيقك
عندما يعرض تطبيقك معلومات تم الحصول عليها من
PlacesClient،
مثل الصور والمراجعات، يجب أن يعرض التطبيق أيضًا بيانات تحديد المصدر المطلوبة.
لمزيد من المعلومات، يُرجى الاطّلاع على سياسات Places SDK لنظام التشغيل Android.