محاسبه خلاصه مسیریابی
برای استفاده از جستجوی متنی (جدید) یا جستجوی نزدیک (جدید) برای محاسبه مدت زمان سفر و فاصله تا هر مکان در پاسخ:
پارامتر
RoutingParametersرا در درخواست ارسال کنید، با استفاده ازsetOrigin()مختصات طول و عرض جغرافیایی مبدا مسیریابی را مشخص کنید. این پارامتر برای محاسبه مدت زمان و فاصله تا هر مکان در پاسخ لازم است.هنگام ساخت شیء درخواست،
.setRoutingSummariesIncluded(true)را اضافه کنید.
استفاده از جستجوی متنی (جدید)
در درخواست زیر، مدت زمان سفر و فاصله تا هر مکان در پاسخ جستجوی متن (جدید) را محاسبه میکنید:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .build(); // Use the builder to create a SearchByTextRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food in Sydney, Australia", placeFields) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = response.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });
کلاس SearchByTextResponse نشان دهنده پاسخ یک درخواست جستجو است. میتوانید SearchByTextResponse.getRoutingSummaries() را برای بازگرداندن لیست خلاصههای مسیریابی فراخوانی کنید. یک شیء SearchByTextResponse همچنین شامل موارد زیر است:
- فهرستی از اشیاء
Placeکه تمام مکانهای منطبق را نشان میدهند، به طوری که برای هر مکان منطبق، یک شیءPlaceوجود دارد. - هر شیء
Placeفقط شامل فیلدهایی است که توسط لیست فیلدهای ارسالی در درخواست تعریف شدهاند.
از جستجوی نزدیک استفاده کنید
در این مثال، شما مدت زمان سفر و فاصله تا هر مکان را در پاسخ جستجوی نزدیک محاسبه میکنید. این مثال رستورانها را در سیدنی، استرالیا جستجو میکند و محدودیت مکان و مبدا مسیریابی را روی مختصات طول و عرض جغرافیایی یکسان تنظیم میکند:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the search area as a 500 meter diameter circle in Sydney, Australia. LatLng center = new LatLng(-33.8688, 151.1957362); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 500); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .build(); // Use the builder to create a SearchNearbyRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchNearby() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = response.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });
کلاس SearchNearbyResponse نشان دهنده پاسخ یک درخواست جستجو است. میتوانید SearchNearbyResponse.getRoutingSummaries() را برای بازگرداندن لیست خلاصههای مسیریابی فراخوانی کنید. یک شیء SearchNearbyResponse همچنین شامل موارد زیر است:
- فهرستی از اشیاء
Placeکه تمام مکانهای منطبق را نشان میدهند، به طوری که برای هر مکان منطبق، یک شیءPlaceوجود دارد. - هر شیء
Placeفقط شامل فیلدهایی است که توسط لیست فیلدهای ارسالی در درخواست تعریف شدهاند.
لازم نیست از مختصات یکسانی برای محدودیت مکان و مبدأ مسیریابی استفاده کنید. برای مثال، شما محدودیت مکانها را روی نقطه مرکزی سیدنی تنظیم میکنید تا نتایج جستجو به آن دایره محدود شود. اما سپس مبدأ مسیریابی را روی مختصات خانه خود تنظیم میکنید، یعنی به مکانی متفاوت در داخل دایره جستجو. سپس درخواست، نتایج جستجو را به دایره محدود میکند و خلاصههای مسیریابی را بر اساس موقعیت خانه شما محاسبه میکند.
گزینههای سفر را مشخص کنید
به طور پیشفرض، محاسبات مدت زمان و مسافت برای یک خودرو انجام میشود. با این حال، میتوانید نوع خودرو و همچنین سایر گزینهها را در جستجو کنترل کنید.
از
routingParameters.setTravelMode()برای تنظیم حالت حمل و نقل رویDRIVE،BICYCLE،WALKیاTWO_WHEELERاستفاده کنید. برای اطلاعات بیشتر در مورد این گزینهها، به بخش انواع وسایل نقلیه موجود برای مسیرها مراجعه کنید.- از
routingParameters.setRoutingPreference()برای تنظیم گزینه ترجیح مسیریابی رویTRAFFIC_UNAWARE(پیشفرض)،TRAFFIC_AWAREیاTRAFFIC_AWARE_OPTIMALاستفاده کنید. هر گزینه سطوح مختلفی از کیفیت و تأخیر دادهها را دارد. برای اطلاعات بیشتر، به بخش «نحوه و نحوه گنجاندن دادههای ترافیک را مشخص کنید» مراجعه کنید. -
routingParameters.setRouteModifiers()برای تعیینavoidTolls،avoidHighways،avoidFerriesوavoidIndoorاستفاده کنید. برای اطلاعات بیشتر در مورد این گزینهها، به Specify route features to avoid مراجعه کنید.
در مثال بعدی، حالت سفر را DRIVE و برای جلوگیری از بزرگراهها مشخص میکنید:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the routing modifiers object. RouteModifiers routeModifiers = RouteModifiers.builder() .setAvoidHighways(true) .build(); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .setTravelMode(DRIVE) .setRouteModifiers(routeModifiers) .build(); // Use the builder to create a SearchByTextRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food in Sydney, Australia", placeFields) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = result.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });