محاسبه خلاصه مسیریابی
برای استفاده از جستجوی متن (جدید) یا جستجوی نزدیک (جدید) برای محاسبه مدت زمان سفر و مسافت تا هر مکان در پاسخ:
با استفاده از
setOrigin()
پارامترRoutingParameters
را برای تعیین مختصات طول و عرض جغرافیایی مبدا مسیریابی ارسال کنید. این پارامتر برای محاسبه مدت زمان و فاصله تا هر مکان در پاسخ مورد نیاز است.هنگام ساختن شی درخواست،
.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
فقط شامل فیلدهایی است که توسط لیست فیلد ارسال شده در درخواست تعریف شده است.
از جستجوی نزدیک استفاده کنید
در این مثال، شما مدت زمان سفر و مسافت تا هر مکان را در پاسخ جستجوی Nearby محاسبه میکنید. این مثال رستورانها را در سیدنی، استرالیا جستجو میکند و محدودیت مکان و مبدأ مسیریابی را روی همان مختصات طول و عرض جغرافیایی تنظیم میکند:
// 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
را مشخص کنید. برای اطلاعات بیشتر در مورد این گزینهها، به مشخص کردن ویژگیهای مسیر برای اجتناب مراجعه کنید.
در مثال بعدی، حالت سفر را به عنوان 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(); });