পথ ধরে অনুসন্ধান করুন

কোনো রুট বরাবর অনুসন্ধান করার জন্য টেক্সট সার্চ (নতুন) ব্যবহার করতে, রাউটস এপিআই থেকে আগে থেকে গণনা করা রুটটিকে একটি পলিলাইন হিসেবে অনুরোধে পাঠান। প্রতিক্রিয়াটিতে এমন স্থানগুলি থাকে যা অনুসন্ধানের শর্ত পূরণ করে এবং নির্দিষ্ট রুটের কাছাকাছি অবস্থিত।

একটি পথ বরাবর অনুসন্ধান করতে:

  1. Routes API ব্যবহার করে এমন একটি রাউট গণনা করুন যা রেসপন্সে রাউটের এনকোডেড পলিলাইন ফেরত দেয়

  2. সার্চের ফলাফলকে নির্দিষ্ট রুটের দিকে পক্ষপাতদুষ্ট করতে, টেক্সট সার্চ (নতুন)-এ রুটের এনকোডেড পলিলাইনটি পাঠানোর জন্য SearchAlongRouteParameters.setPolyline() ব্যবহার করুন। এর ফলে প্রাপ্ত রেসপন্সে এমন সব স্থানের তথ্য থাকবে যা সার্চের শর্ত পূরণ করে এবং নির্দিষ্ট রুটের কাছাকাছি অবস্থিত।

ডিফল্টরূপে, টেক্সট সার্চ (নতুন) পলিলাইন দ্বারা সংজ্ঞায়িত উৎস থেকে গন্তব্য পর্যন্ত সম্পূর্ণ পথ বরাবর অনুসন্ধান করে। নিম্নলিখিত উদাহরণে, পলিলাইনটি এই স্থান থেকে পথটি নির্ধারণ করে:

  • উৎস : ১৬০০ অ্যাম্ফিথিয়েটার পার্কওয়ে, মাউন্টেন ভিউ, ক্যালিফোর্নিয়া
  • গন্তব্য : ২৪ উইলি মেস প্লাজা, সান ফ্রান্সিসকো, ক্যালিফোর্নিয়া

এই রুটের জন্য ট্রিপটির এনকোডেড পলিলাইনটি নিম্নলিখিত স্ট্রিং দ্বারা প্রকাশ করা হয়:

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

নিম্নলিখিত উদাহরণটি অনুসন্ধানের ফলাফলকে প্রভাবিত করতে রুটের এনকোডেড পলিলাইন ব্যবহার করে:

// 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)
  .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();
  });

SearchByTextResponse ক্লাসটি একটি সার্চ রিকোয়েস্টের রেসপন্সকে উপস্থাপন করে। একটি SearchByTextResponse অবজেক্টে থাকে:

  • Place অবজেক্টের একটি তালিকা যা সমস্ত মিলে যাওয়া স্থানগুলিকে প্রতিনিধিত্ব করে, যেখানে প্রতিটি মিলে যাওয়া স্থানের জন্য একটি করে Place অবজেক্ট থাকে।
  • প্রতিটি Place অবজেক্টে শুধুমাত্র অনুরোধে পাঠানো ফিল্ড তালিকা দ্বারা সংজ্ঞায়িত ফিল্ডগুলোই থাকে।

আপনাকে পুরো রুটের জন্য ফলাফলকে পক্ষপাতদুষ্ট করতে হবে না। উদাহরণস্বরূপ, অনুসন্ধান করার আগেই আপনি হয়তো রুটের অর্ধেক পথ পাড়ি দিয়ে ফেলেছেন। এই ক্ষেত্রে, এনকোডেড পলিলাইনে সংজ্ঞায়িত অরিজিনকে ওভাররাইড করতে আপনি অনুসন্ধানে একটি সুস্পষ্ট রাউটিং অরিজিন নির্দিষ্ট করে দিতে পারেন। নিম্নলিখিত উদাহরণে, আপনি ক্যালিফোর্নিয়ার সান মাতেও-এর অক্ষাংশ এবং দ্রাঘিমাংশের স্থানাঙ্ক নির্দিষ্ট করেছেন, যা রুট পলিলাইনের প্রায় মাঝামাঝি অবস্থিত:

// 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 parameters object and pass the routing origin.
RoutingParameters routingParameters = RoutingParameters.builder()
  .setOrigin(toLatLng("37.56617, -122.30870"))
  .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 and routing parameters.
final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields)
  .setMaxResultCount(10)
  .setRoutingParameters(routingParameters)
  .setSearchAlongRouteParameters(searchAlongRouteParameters)
  .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();
  });

চেষ্টা করে দেখুন!

এপিআই এক্সপ্লোরার আপনাকে নমুনা অনুরোধ করার সুযোগ দেয়, যাতে আপনি এপিআই এবং এর অপশনগুলোর সাথে পরিচিত হতে পারেন।

  1. পৃষ্ঠার ডানদিকে থাকা API আইকনটি (api) নির্বাচন করুন।

  2. ইচ্ছা হলে অনুরোধের প্যারামিটারগুলো সম্পাদনা করুন।

  3. Execute বাটনটি নির্বাচন করুন। প্রদর্শিত ডায়ালগ বক্সে, অনুরোধটি করার জন্য আপনি যে অ্যাকাউন্টটি ব্যবহার করতে চান, সেটি বেছে নিন।

  4. এপিআই এক্সপ্লোরার প্যানেলে, এপিআই এক্সপ্লোরার উইন্ডোটি প্রসারিত করতে ফুলস্ক্রিন আইকনটি নির্বাচন করুন।