قبل استخدام Location Selection API للبحث عن نقاط استلام الرحلات، اتّبِع التعليمات للتكامل مع مكتبة العميل.
توفّر خدمة "اختيار الموقع الجغرافي" ثلاث واجهات برمجة تطبيقات لاختيار مواقع الاستلام والتسليم: FindNearbyPlaces وFindPickupPointsForPlace وFindPickupPointsForLocation.
استخدِم FindNearbyPlaces لجلب الأماكن القريبة من الموقع الجغرافي للبحث أو الجهاز. يتم ترتيب الأماكن حسب مدى قربها من الموقع الجغرافي ومدى ملاءمتها لخدمة مشاركة الرحلات. تعرض FindNearbyPlaces قائمة بالأماكن التي يمكن عرضها
لتمكين المستخدم من تحديد أفضل خيار. بعد اختيار مكان، استخدِم
FindPickupPointsForPlace لجلب نقاط استلام الطلب الخاصة بالمكان المحدّد.
استخدِم FindPickupPointsForLocation لجلب الأماكن ونقاط الاستلام المرتبطة بها بالقرب من الموقع الجغرافي للبحث أو الجهاز في طلب RPC نفسه.
يرتبط كل نقطة استلام بمكان. يتم ترتيب نقاط الاستلام حسب قربها من الموقع الجغرافي ومدى أهميتها في خدمة مشاركة الركوب. يُرجى العِلم أنّه يتم ترتيب نقاط الاستلام الخاصة بأماكن متعدّدة معًا. تجمع FindPickupPointsForLocation بين FindNearbyPlaces وFindPickupPointsForPlace. على سبيل المثال، لنفترض أنّ الموقع الجغرافي للطلب قريب من الأماكن "أ1" و"أ2" و"أ3". إذا كانت أفضل نقطة استلام T1 مرتبطة بالمكان P2 وكانت نقطة الاستلام الأفضل التالية مرتبطة بالمكان P1، سيتم ترتيب النتائج على النحو التالي: [T1:P2, T2:P1, ...].
يعتمد ترتيب نقاط الاستلام على المعايير المقدَّمة في الطلب. لمزيد من المعلومات، اطّلِع على تحسين عمليات الاستلام لرحلات متعدّدة.
البحث حسب الموقع الجغرافي
إذا كنت تفضّل عرض الأماكن للمستخدم قبل اختيار نقاط الاستلام، أو عرض الأماكن القريبة عن طريق سحب دبوس، استخدِم طلب RPC التالي:
FindNearbyPlacesRequest find_nearby_places_request =
FindNearbyPlacesRequest.newBuilder()
.setLocalizationPreferences(LocalizationPreferences.newBuilder()
// Language used for localizing text such as name or address.
.setLanguageCode("en")
.setRegionCode("US")
.build())
// Rider's location or location of dragged pin.
.setSearchLocation(LatLng.newBuilder().setLatitude(37.365647).setLongitude(-121.925356))
// Number of places requested.
.setMaxResults(3)
.build();
FindNearbyPlacesResponse findNearbyPlacesResponse =
locationSelectionBetaClient.findNearbyPlaces(find_nearby_places_request);
يعرض طلب RPC قائمة مرتبة من استجابات الأماكن التي تستوفي معايير الإدخال، ويتم ترتيبها حسب مزيج من القرب والأهمية. يمكنك السماح للراكب باختيار مكان أو استخدام النتيجة الأولى والمتابعة إلى خطوة اختيار نقطة الاستلام. يتضمّن كل ردّ خاص بمكان place_id فريدًا يمكن استخدامه في
FindPickupPointsForPlaceRequest لاسترداد نقاط الاستلام. لمزيد من المعلومات، اطّلِع على البحث حسب معرّف المكان.
FindPickupPointsForLocationRequest FindPickupPointsForLocationRequest =
FindPickupPointsForLocationRequest.newBuilder()
// Language used for localizing text such as name and address.
.setLocalizationPreferences(LocalizationPreferences.newBuilder().setRegionCode("US").setLanguageCode("en"))
// The search location of the rider or the dropped pin.
.setSearchLocation(LatLng.newBuilder().setLatitude(-23.482049).setLongitude(-46.602135))
// The max results returned.
.setMaxResults(5)
// List of travel modes. At least one of the travel modes must be supported by the pickup points.
.addTravelModes(TravelMode.DRIVING)
// Specifies the sorting order of matching pickup points.
.setOrderBy(PickupPointOrder.DISTANCE_FROM_SEARCH_LOCATION)
.build();
FindPickupPointsForLocationResponse FindPickupPointsForLocationResponse =
locationSelectionService.FindPickupPointsForLocation(
RpcClientContext.create(), FindPickupPointsForLocationRequest);
يعرض طلب RPC قائمة مرتّبة بنقاط الاستلام التي تستوفي معايير الإدخال، ويتم ترتيبها حسب مزيج من القرب والأهمية. تجمع مكالمة RPC هذه بين FindNearbyPlaces وFindPickupPointsForPlaceRequest ويمكن استخدامها بدلاً من الجمع بين المكالمتَين الأخريَين.
البحث حسب معرّف المكان
يمكنك الحصول على place_id باستخدام FindNearbyPlaces أو من خلال استخدام خدمة الإكمال التلقائي في Places API. بعد ذلك، استخدِم طلب استدعاء الإجراء عن بُعد التالي لتوفير نقاط استلام مثالية للمكان المحدّد:
FindPickupPointsForPlaceRequest findPickupPointsForPlaceRequest =
FindPickupPointsForPlaceRequest.newBuilder()
// Language used for localizing text such as name and address.
.setLocalizationPreferences(LocalizationPreferences.newBuilder().setRegionCode("US").setLanguageCode("en"))
// Place ID of the place for which pickup points are being fetched;
// for example, Hilton Hotel, Downtown San Jose.
.setPlaceId("ChIJwTUa-q_Mj4ARff4yludGH-M")
// List of travel modes. At least one of the travel modes must be supported by the pickup points.
.addTravelModes(TravelMode.DRIVING)
// Rider's location or location of dragged pin.
// It is recommended to use the same location that was used in `FindNearbyPlaces` for better quality.
.setSearchLocation(LatLng.newBuilder().setLatitude(37.329472).setLongitude(-121.890449))
.setOrderBy(PickupPointOrder.DISTANCE_FROM_SEARCH_LOCATION)
.setMaxResults(5)
.build();
FindPickupPointsForPlaceResponse findPickupPointsForPlaceResponse =
locationSelectionBetaClient.findPickupPointsForPlace(findPickupPointsForPlaceRequest);
تعرض الدالة FindPickupPointsForPlace النتيجة PickupPointResponses التي تتضمّن خط العرض وخط الطول للنقاط التي يمكن فيها اصطحاب الراكب.
تحسين عمليات الاستلام لرحلات متعدّدة
بالنسبة إلى الرحلات المشتركة أو المتتالية، تتيح FindPickupPointsForPlace ترتيب نقاط الاستلام حسب DRIVING_ETA_FROM_PICKUP_POINT_TO_DESTINATION. يتيح لك ذلك عرض نقطة استلام للرحلة التالية تم تحسينها وفقًا لمسار الرحلة الحالية للسائق.
مثال
FindPickupPointsForPlaceRequest findPickupPointsForPlaceRequest =
FindPickupPointsForPlaceRequest.newBuilder()
// Language used for localizing text such as name and address.
.setLocalizationPreferences(LocalizationPreferences.newBuilder().setRegionCode("US").setLanguageCode("en"))
// Place ID of the place for which pickup points are being fetched;
// for example, Hilton Hotel, Downtown San Jose.
.setPlaceId("ChIJwTUa-q_Mj4ARff4yludGH-M")
// List of travel modes. At least one of the travel modes must be supported by the pickup points.
.addTravelModes(TravelMode.DRIVING)
// Second rider's location or location of dragged pin.
.setSearchLocation(LatLng.newBuilder().setLatitude(37.329472).setLongitude(-121.890449))
// Location of the driver's next drop off after picking up the second
// rider. Note, it is not necessarily the second rider's destination.
.setDestination(LatLng.newBuilder().setLatitude(37.329472).setLongitude(-121.890449))
.setOrderBy(PickupPointOrder.DRIVING_ETA_FROM_PICKUP_POINT_TO_DESTINATION)
.setComputeDrivingEta(true)
.setMaxResults(5)
.build();
FindPickupPointsForPlaceResponse findPickupPointsForPlaceResponse =
locationSelectionBetaClient.findPickupPointsForPlace(findPickupPointsForPlaceRequest);
عرض مخططات المباني والمداخل والمخارج
ضمن رسالة الردّ الخاصة ببروتوكول المكان، يحدّد الحقل
associatedCompounds
المركّبات المرتبطة بالمكان. تحتوي الرسالة المركّبة على ثلاثة أنواع من المعلومات:
- نوع المركّب - أحد الخيارات الأربعة
compoundBuilding- مبنى مستقل واحد، مثل مركز تسوّق أو سوبرماركتcompoundSection: مبنى داخل مجمّع أكبر، مثل متجر واحد في مركز تسوّقcompoundGrounds: كل ما يرتبط بـcompoundBuilding، مثل مركز تسوّق وموقف السيارات التابع له وأي مبانٍ أخرى داخل موقف السيارات هذا-
unrecognized- القيمة التلقائية
- الهندسة - إحداثيات المضلّع المحدّد، ويتم تخزينها في بنية GeoJSON في الحقل
displayBoundaryتُستخدَم هذه الإحداثيات لإنشاء المخطط التفصيلي للقسم أو المبنى أو الأراضي. - المداخل: إحداثيات خط العرض وخط الطول لجميع المداخل والمخارج المحدّدة
تعرض Location Selection أي نوع مركّب مرتبط بموقع البحث. إذا كان الموقع الجغرافي للبحث في متجر معيّن ضمن مركز تسوّق، ستعرض "أداة اختيار الموقع الجغرافي" ما يلي: * المتجر المحدّد ومداخله ومخارجه ومخططه * المبنى المجمّع (مركز التسوّق) ومداخله ومخارجه ومخططه * أرض المجمّع (مركز التسوّق وموقف السيارات) ومداخله ومخارجه ومخطط الأرض بأكملها
تعرض هذه الصورة جميع أنواع المركّبات الثلاثة التي يتم عرضها.

تعرض هذه الصورة عدة مواقع جغرافية داخل مطار، مع حدود كل من مبنى داخل المطار وحدود المطار وجميع الأراضي التابعة له.
