रास्ते की खास जानकारी के साथ-साथ, रास्ते में पड़ने वाली जगहें खोजना
रास्ते की खास जानकारी के साथ रास्ते में खोजें सुविधा का इस्तेमाल किया जा सकता है. इस मामले में, टेक्स्ट खोज (नई सुविधा) सुविधा, जवाब में हर जगह तक पहुंचने में लगने वाला समय और दूरी दिखाती है. इसके बाद, हर जगह से रूट के आखिरी डेस्टिनेशन तक पहुंचने में लगने वाला समय और दूरी दिखाती है.
रास्ते के साथ-साथ खोज करने के साथ-साथ रूटिंग की खास जानकारी का हिसाब लगाने के लिए, टेक्स्ट खोज (नया) का इस्तेमाल करने के लिए:
-
Routes API का इस्तेमाल करके, ऐसा रूट कैलकुलेट करें जो जवाब में रास्ते की पॉलीलाइन दिखाता हो.
-
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 (New) एपीआई, दो लेग वाली यात्रा का समय दिखाता है:
-
पहले लेग में, यात्रा की अवधि और यात्रा शुरू करने की जगह से मंज़िल तक की दूरी शामिल होती है.
-
दूसरे लेग में, यात्रा की अवधि और जगह से लेकर रास्ते के डेस्टिनेशन तक की दूरी शामिल होती है.
रूटिंग के लिए शुरुआती जगह, यात्रा मोड, और रूट मॉडिफ़ायर की जानकारी देना
रास्ते की जानकारी और खोज के नतीजों के हिसाब से समय का अनुमान लगाने के तरीके में बदलाव किया जा सकता है. इसके लिए, आपको यात्रा शुरू करने की जगह, यात्रा का तरीका, रास्ते में बदलाव करने वाले पैरामीटर, और रास्ते से जुड़ी प्राथमिकताएं तय करनी होंगी. यात्रा के मोड और रास्ते में बदलाव करने वाले विकल्प, रूटिंग की खास जानकारी का हिसाब लगाने के लिए उसी तरह काम करते हैं जिस तरह बिना कोई रास्ता बताए काम करते हैं. इसके बारे में यात्रा के विकल्प तय करना लेख में बताया गया है.
डिफ़ॉल्ट रूप से, हर नतीजे के पहले लेग में, पॉलीलाइन से तय की गई मूल जगह से हर जगह की दूरी शामिल होती है. हालांकि, अनुरोध में राउटिंग के ओरिजन की जानकारी देकर, डिफ़ॉल्ट सेटिंग को बदला जा सकता है. अगर यह विकल्प चुना जाता है, तो सभी जवाबों के पहले लेग में, तय किए गए रूटिंग ओरिजिन से दूरी और अवधि की जानकारी दी जाती है. इससे पॉलीलाइन के ओरिजिन की जानकारी बदल जाती है.
अगले उदाहरण में, सैन मेटियो, कैलिफ़ोर्निया के निर्देशांकों को रास्तों की जानकारी के लिए शुरुआती जगह के तौर पर सेट किया गया है. साथ ही, टोल से बचने और नतीजों की संख्या को 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(); });
इस इमेज में एक मैप दिखाया गया है. इसमें रास्ते की पॉलीलाइन, नई शुरुआती जगह (हल्के नीले रंग की पिन), और खोज के नतीजों में मौजूद जगहें (हरे रंग की पिन) शामिल हैं. ध्यान दें कि सभी नतीजे रास्ते पर हैं, लेकिन सैन मेटो के बाद:
