خلاصه‌های مسیریابی را با جستجو در طول مسیر ترکیب کنید

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

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

  1. از API مسیرها برای محاسبه مسیری که یک چندخطی مسیر را در پاسخ برمی‌گرداند ، استفاده کنید.

  2. از searchAlongRouteParameters.setPolyline() برای ارسال چندخطی مسیر به Text Search (جدید) استفاده کنید تا نتایج جستجو به سمت مسیر متمایل شوند. سپس پاسخ شامل مکان‌هایی است که با معیارهای جستجو مطابقت دارند و همچنین در نزدیکی مسیر مشخص شده قرار دارند.

  3. هنگام ساخت شیء درخواست، .setRoutingSummariesIncluded(true) را اضافه کنید.

به طور پیش‌فرض، جستجوی متنی (جدید) جستجو را در کل مسیر انجام می‌دهد:

// Define the route polyline object using the route string.
EncodedPolyline encodedPolyline = EncodedPolyline.newInstance("wblcFptchVIFOd@G@EVw@Ms@dHKR}ApNA`AF~@Hf@TjAb@bBb@~@n@p@^Rd@~@Vz@HVz@nDLt@?d@Kr@c@~@mD`G?`@aEfGkCnDuChDm`@bb@[`@{GhHeEdEciBnnBkC`DkC~DaClEuKjT_Z|l@Qb@iR~_@}EzJ_AdB_Und@kAfCaOjZkg@vcAqBzD_]rr@iBlEaBxEgArD}AlG}AhHsA`IeAnH{@dIq@dJgL~iBq@rHu@vGgAtHwArHaBhHkBzG_DpJ}Nbc@iBhGkA|EgC|LcIjb@oAhG_AvDgAdDkApC_BzCiBpCsFvGii@vn@scAxlAmLjNgSzUeRjT{TzWqExEmG|FuNlMmMhLaRvPqOlNmbAl}@mFlF{PlOmJfIoElE}LtMiSbU_H`I}}@jcAwl@vp@oAbBqA~BeAhCm@tBg@fCWrBQ~BI|DaB~rBO~D[bEa@`Dm@pDaAdE{@vC_BbEkB~Def@|z@sEzHKJeS~]}K`S{\\~l@cXpe@sBpDm@bAuCxDkBrBiC~BwCtByBnAcBx@}Bt@{Bn@gh@|LaOpDeFhAoDj@aE^kVrA_E^iEr@yD~@uBr@gMjF_EnAcCh@eFr@_DRsAD}@Jsu@xCWDqIV}BCeCOyDm@cBa@_DmA}JeE_CwAsBcBiBoBuAqBmOoX{CuEkB_CoDqDkVoUoD{CeE_DkEkC_FeCqB}@sDuAoDgAeCe@cCW}CK}BDaDTeOlBcuBrYaNlBq@Dyd@rGyFt@yBb@eBf@oCnAoBlAkIpGkAp@wBbAaCt@oFdAwKjBoGxA{FbByIjC_HfB_@KmNdDuC|@uFzBcH|C{@\\[?sBv@}@VaBVoA@y@EmAQcA[w@]aBkAeAkA}BuDUKs@uAqBsCwBcCgAiAiN_MyKsJsG{GkBaBiBuA{BwAwDkBcOaHiC_AiCg@}BQcCAcBHqBVkB`@qEjAu@LgCVgAHwG@sG?mABsH^eNr@mBXy@NqBt@uAt@aBlAkAlA}BtCyApBiAdB_BxB{A`B}@j@oAf@s@PeCVcIf@gAAkAQy@YiAo@_A{@_DgEgJqM_DeEaM}PoBiCzAsBw@kAdAGVk@f@q@z@C
");

// Specify the list of fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

// Define the search along route parameters object and pass the polyline object.
SearchAlongRouteParameters searchAlongRouteParameters = SearchAlongRouteParameters.builder()
    .setPolyline(encodedPolyline)
    .build();

// Use the builder to create a SearchByTextRequest object and pass the search along route parameters.
final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields)
    .setMaxResultCount(10)
    .setSearchAlongRouteParameters(searchAlongRouteParameters)
    .setRoutingSummariesIncluded(true)
    .build();

// Call PlacesClient.searchByText() to perform the search.
// Define a response handler to process the returned List of Place 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.getRoutingSummaries() را برای بازگرداندن فهرست خلاصه‌های مسیریابی فراخوانی کنید.

برای هر ورودی در آرایه‌ی legs ، جستجوی متن (جدید) زمان سفر دو مرحله‌ای را برمی‌گرداند:

  • مرحله اول شامل مدت زمان سفر و فاصله از مبدا تا محل مورد نظر است.

  • بخش دوم شامل مدت زمان سفر و فاصله از محل تا مقصد مسیر است.

مبدا مسیریابی، حالت سفر و اصلاح‌کننده‌های مسیر را مشخص کنید

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

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

در مثال بعدی، شما یک مبدا مسیریابی را به عنوان مختصات سن ماتئو، کالیفرنیا مشخص می‌کنید، برای جلوگیری از عوارض مشخص می‌کنید و تعداد نتایج را روی ۵ تنظیم می‌کنید:

// Define the route polyline object using the route string.
EncodedPolyline encodedPolyline = EncodedPolyline.newInstance("wblcFptchVIFOd@G@EVw@Ms@dHKR}ApNA`AF~@Hf@TjAb@bBb@~@n@p@^Rd@~@Vz@HVz@nDLt@?d@Kr@c@~@mD`G?`@aEfGkCnDuChDm`@bb@[`@{GhHeEdEciBnnBkC`DkC~DaClEuKjT_Z|l@Qb@iR~_@}EzJ_AdB_Und@kAfCaOjZkg@vcAqBzD_]rr@iBlEaBxEgArD}AlG}AhHsA`IeAnH{@dIq@dJgL~iBq@rHu@vGgAtHwArHaBhHkBzG_DpJ}Nbc@iBhGkA|EgC|LcIjb@oAhG_AvDgAdDkApC_BzCiBpCsFvGii@vn@scAxlAmLjNgSzUeRjT{TzWqExEmG|FuNlMmMhLaRvPqOlNmbAl}@mFlF{PlOmJfIoElE}LtMiSbU_H`I}}@jcAwl@vp@oAbBqA~BeAhCm@tBg@fCWrBQ~BI|DaB~rBO~D[bEa@`Dm@pDaAdE{@vC_BbEkB~Def@|z@sEzHKJeS~]}K`S{\\~l@cXpe@sBpDm@bAuCxDkBrBiC~BwCtByBnAcBx@}Bt@{Bn@gh@|LaOpDeFhAoDj@aE^kVrA_E^iEr@yD~@uBr@gMjF_EnAcCh@eFr@_DRsAD}@Jsu@xCWDqIV}BCeCOyDm@cBa@_DmA}JeE_CwAsBcBiBoBuAqBmOoX{CuEkB_CoDqDkVoUoD{CeE_DkEkC_FeCqB}@sDuAoDgAeCe@cCW}CK}BDaDTeOlBcuBrYaNlBq@Dyd@rGyFt@yBb@eBf@oCnAoBlAkIpGkAp@wBbAaCt@oFdAwKjBoGxA{FbByIjC_HfB_@KmNdDuC|@uFzBcH|C{@\\[?sBv@}@VaBVoA@y@EmAQcA[w@]aBkAeAkA}BuDUKs@uAqBsCwBcCgAiAiN_MyKsJsG{GkBaBiBuA{BwAwDkBcOaHiC_AiCg@}BQcCAcBHqBVkB`@qEjAu@LgCVgAHwG@sG?mABsH^eNr@mBXy@NqBt@uAt@aBlAkAlA}BtCyApBiAdB_BxB{A`B}@j@oAf@s@PeCVcIf@gAAkAQy@YiAo@_A{@_DgEgJqM_DeEaM}PoBiCzAsBw@kAdAGVk@f@q@z@C
");

// 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()
    .setAvoidTolls(true)
    .build();

// Define the routing parameters object and pass the routing origin.
// Set the travel mode to DRIVE.
// Pass the routeModifiers object.
RoutingParameters routingParameters = RoutingParameters.builder()
    .setOrigin(toLatLng("37.56617, -122.30870"))
    .setTravelMode(DRIVE)
    .setRouteModifiers(routeModifiers)
    .build();

// Define the search along route parameters object and pass the polyline object.
SearchAlongRouteParameters searchAlongRouteParameters = SearchAlongRouteParameters.builder()
    .setPolyline(encodedPolyline)
    .build();

// Use the builder to create a SearchByTextRequest object and pass the search along route parameters.
final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields)
    .setMaxResultCount(5)
    .setRoutingParameters(routingParameters)
    .setSearchAlongRouteParameters(searchAlongRouteParameters)
    .setRoutingSummariesIncluded(true)
    .build();

// Call PlacesClient.searchByText() to perform the search.
// Define a response handler to process the returned List of Place 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();
    });

تصویر زیر نقشه‌ای را نشان می‌دهد که شامل چندخطی مسیر، مبدا جدید (پین آبی روشن) و مکان‌های موجود در نتایج جستجو (پین‌های سبز) است. توجه کنید که چگونه همه نتایج در امتداد مسیر اما بعد از سن ماتئو هستند:

نتایج جستجو از مبدا به‌روزرسانی.