محاسبه خلاصه مسیریابی

برای استفاده از جستجوی متنی (جدید) یا جستجوی نزدیک (جدید) برای محاسبه مدت زمان سفر و فاصله تا هر مکان در پاسخ:

  1. پارامتر RoutingParameters را در درخواست ارسال کنید، با استفاده از setOrigin() مختصات طول و عرض جغرافیایی مبدا مسیریابی را مشخص کنید. این پارامتر برای محاسبه مدت زمان و فاصله تا هر مکان در پاسخ لازم است.

  2. هنگام ساخت شیء درخواست، .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 فقط شامل فیلدهایی است که توسط لیست فیلدهای ارسالی در درخواست تعریف شده‌اند.

لازم نیست از مختصات یکسانی برای محدودیت مکان و مبدأ مسیریابی استفاده کنید. برای مثال، شما محدودیت مکان‌ها را روی نقطه مرکزی سیدنی تنظیم می‌کنید تا نتایج جستجو به آن دایره محدود شود. اما سپس مبدأ مسیریابی را روی مختصات خانه خود تنظیم می‌کنید، یعنی به مکانی متفاوت در داخل دایره جستجو. سپس درخواست، نتایج جستجو را به دایره محدود می‌کند و خلاصه‌های مسیریابی را بر اساس موقعیت خانه شما محاسبه می‌کند.

گزینه‌های سفر را مشخص کنید

به طور پیش‌فرض، محاسبات مدت زمان و مسافت برای یک خودرو انجام می‌شود. با این حال، می‌توانید نوع خودرو و همچنین سایر گزینه‌ها را در جستجو کنترل کنید.

در مثال بعدی، حالت سفر را 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();
    });