รวมข้อมูลสรุปการกำหนดเส้นทางกับการค้นหาตามเส้นทาง
คุณสามารถรวมการคำนวณสรุปการกำหนดเส้นทางกับการค้นหาตามเส้นทาง ในกรณีนี้ การค้นหาข้อความ (ใหม่) จะแสดงระยะเวลาการเดินทางและระยะทางไปยังแต่ละ สถานที่ในการตอบกลับ จากนั้นจะแสดงระยะทางจากแต่ละสถานที่ไปยังจุดหมายปลายทางสุดท้ายของ เส้นทาง
วิธีใช้การค้นหาข้อความ (ใหม่) เพื่อคำนวณข้อมูลสรุปการกำหนดเส้นทางพร้อมกับการค้นหา ตามเส้นทาง
-
ใช้ Routes API เพื่อคำนวณเส้นทางที่แสดงผล Polyline ของเส้นทาง ในการตอบกลับ
-
ใช้
searchAlongRouteParameters.setPolyline()
เพื่อ ส่งเส้นประกอบของเส้นทางไปยังการค้นหาข้อความ (ใหม่) เพื่อให้ผลการค้นหา เอนเอียงไปตามเส้นทาง จากนั้นคำตอบจะมีสถานที่ที่ตรงกับเกณฑ์การค้นหา และอยู่ใกล้กับเส้นทางที่ระบุด้วย -
เมื่อสร้างออบเจ็กต์คำขอ ให้เพิ่ม
.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
Text Search (ใหม่) จะแสดงผลการเดินทางแบบ 2 ขา
เวลา:
-
ช่วงแรกประกอบด้วยระยะเวลาการเดินทางและระยะทางจากต้นทางไปยัง สถานที่
-
ช่วงที่ 2 จะมีระยะเวลาเดินทางและระยะทางจากสถานที่ตั้งไปยัง จุดหมายของเส้นทาง
ระบุต้นทางการกำหนดเส้นทาง โหมดการเดินทาง และตัวแก้ไขเส้นทาง
คุณสามารถแก้ไขการคำนวณข้อมูลสรุปการค้นหาและการกำหนดเส้นทางได้โดยระบุ ต้นทางการกำหนดเส้นทาง โหมดการเดินทาง ตัวแก้ไขเส้นทาง และค่ากำหนดการกำหนดเส้นทาง ตัวเลือกโหมดการเดินทางและตัวเลือกเส้นทางจะทำงานเหมือนกับการคำนวณข้อมูลสรุปการกำหนดเส้นทาง โดยไม่ต้องระบุเส้นทางตามที่แสดงในหัวข้อระบุตัวเลือกการเดินทาง
โดยค่าเริ่มต้น ขาแรกของผลลัพธ์แต่ละรายการจะมีระยะทางจากต้นทาง ที่กำหนดโดยเส้นหลายจุดไปยังแต่ละสถานที่ อย่างไรก็ตาม คุณสามารถลบล้างค่าเริ่มต้นนั้นได้โดย ระบุต้นทางการกำหนดเส้นทางอย่างชัดเจนในคำขอ หากระบุไว้ ขาแรกของคำตอบทั้งหมดจะระบุระยะทางและระยะเวลาจากต้นทางการกำหนดเส้นทางที่ระบุ ซึ่งจะลบล้างต้นทางจากเส้นประกอบ
ในตัวอย่างถัดไป คุณจะระบุต้นทางการกำหนดเส้นทางเป็นพิกัดของซานมาเทโอ รัฐแคลิฟอร์เนีย ระบุให้หลีกเลี่ยงค่าผ่านทาง และตั้งค่าจำนวนผลลัพธ์เป็น 5
// 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(); });
รูปภาพต่อไปนี้แสดงแผนที่ที่มีเส้นประกอบของเส้นทาง ต้นทางใหม่ (หมุดสีฟ้าอ่อน) และสถานที่ในผลการค้นหา (หมุดสีเขียว) สังเกตว่าผลลัพธ์ทั้งหมดอยู่ตามเส้นทาง แต่เลยซานมาเทโอไปแล้ว
