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

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

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

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

در این مثال، شما مدت زمان سفر و مسافت تا هر مکان را در پاسخ جستجوی 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 فقط شامل فیلدهایی است که توسط لیست فیلد ارسال شده در درخواست تعریف شده است.

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

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

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

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