قبل از استفاده از Location Selection API برای جستجوی نقاط تحویل سواری، دستورالعملها را برای ادغام با کتابخانه مشتری دنبال کنید.
سرویس Location Selection سه API را برای انتخاب تحویل و خروج ارائه میکند: FindNearbyPlaces ، FindPickupPointsForPlace ، و FindPickupPointsForLocation .
از FindNearbyPlaces برای واکشی مکانهای نزدیک به جستجو یا مکان دستگاه استفاده کنید. مکان ها بر اساس نزدیکی به مکان و برجستگی آن ها برای سوار شدن رتبه بندی می شوند. FindNearbyPlaces لیستی از مکان هایی را که می تواند نمایش داده شود را برمی گرداند تا کاربر بتواند بهترین انتخاب را انجام دهد. هنگامی که مکانی انتخاب شد، از FindPickupPointsForPlace برای واکشی امتیازهای دریافت برای مکان انتخاب شده استفاده کنید.
از FindPickupPointsForLocation برای واکشی مکانها و نقاط دریافت مرتبط با آنها در نزدیکی مکان جستجو یا دستگاه در همان تماس RPC استفاده کنید. هر نقطه پیکاپ با یک مکان مرتبط است. نقاط پیکاپ بر اساس نزدیکی به مکان و برجستگی آنها برای سوار شدن رتبه بندی می شوند. توجه داشته باشید که نقاط وانت برای چندین مکان با هم سفارش داده می شود. FindPickupPointsForLocation FindNearbyPlaces و FindPickupPointsForPlace ترکیب می کند. به عنوان مثال، بگویید مکان درخواست نزدیک مکان P1، P2 و P3 است. اگر بهترین نقطه وانت 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 را ترکیب می کند و می تواند به جای ترکیب دو تماس دیگر استفاده شود.
جستجو بر اساس شناسه مکان
می توانید با استفاده از FindNearbyPlaces یا با استفاده از سرویس تکمیل خودکار Places API یک place_id دریافت کنید. سپس از فراخوانی RPC زیر برای ارائه نقاط پیکاپ بهینه برای مکان مشخص شده استفاده کنید:
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. این مختصات برای ساخت طرح کلی بخش، ساختمان یا زمین استفاده می شود. - ورودی ها - مختصات طول و عرض جغرافیایی همه ورودی ها و خروجی های واقع شده.
انتخاب مکان هر نوع ترکیبی مرتبط با مکان جستجو را برمیگرداند. اگر مکان جستجو در یک فروشگاه خاص در یک مرکز خرید باشد، انتخاب مکان: * فروشگاه خاص، ورودی ها و خروجی های آن، و طرح کلی فروشگاه * ساختمان مجتمع (مرکز خرید)، ورودی ها و خروجی های آن، و طرح کلی مرکز خرید * محوطه مجتمع (مرکز خرید + پارکینگ)، ورودی ها و خروجی های آنها، و طرح کلی زمین
این تصویر هر سه نوع ترکیب را نشان می دهد که برگردانده شده اند.

این تصویر چندین مکان را در داخل یک فرودگاه نشان میدهد که هم مرز یک ساختمان در داخل فرودگاه و هم مرز فرودگاه و همه محوطههای مرتبط با آن است.
