قبل از استفاده از 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 برای دریافت نقاط تحویل استفاده شود. برای اطلاعات بیشتر، به Search by place id مراجعه کنید.
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ذخیره میشود. این مختصات برای ساخت طرح کلی بخش، ساختمان یا زمین استفاده میشوند. - ورودیها - مختصات طول و عرض جغرافیایی همه ورودیها و خروجیهای واقع شده.
انتخاب مکان، هر نوع ترکیبی مرتبط با مکان جستجو را برمیگرداند. اگر مکان جستجو در یک فروشگاه خاص در یک مرکز خرید باشد، انتخاب مکان موارد زیر را برمیگرداند: * فروشگاه خاص، ورودیها و خروجیهای آن، و طرح کلی فروشگاه * ساختمان مرکز خرید (مرکز خرید)، ورودیها و خروجیهای آن، و طرح کلی مرکز خرید * محوطه مجتمع (مرکز خرید + پارکینگ)، ورودیها و خروجیهای آنها، و طرح کلی کل محوطه
این تصویر نشان میدهد که هر سه نوع ترکیب برگردانده میشوند.

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