iOS-এর জন্য নেভিগেশন SDK ওয়েপয়েন্ট বা নেভিগেশন পয়েন্ট নির্দিষ্ট করার উন্নত উপায় প্রদান করে, যা আরও নির্ভুল রুটিং এবং উন্নততর পৌঁছানোর অভিজ্ঞতা দেয়, বিশেষ করে একাধিক প্রবেশপথ বা নির্দিষ্ট নেভিগেশন পয়েন্টযুক্ত গন্তব্যের ক্ষেত্রে। আপনি একটি navigationPointToken ব্যবহার করে সুনির্দিষ্ট অবস্থানে রুট করতে পারেন, যা একটি স্ট্রিং এবং এটি একটি অবস্থান ও অতিরিক্ত রুটের তথ্য এনকোড করে। বাড়তি তথ্যের জন্য আপনি একটি প্লেস আইডি (Place ID)-র সাথে অক্ষাংশ ও দ্রাঘিমাংশের স্থানাঙ্কও একত্রিত করতে পারেন।
পটভূমি
v10.10-এর আগে, আপনি অবস্থান স্থানাঙ্ক বা একটি প্লেস আইডি ব্যবহার করে একটি Waypoint নির্ধারণ করতে পারতেন। যদিও এটি কখনও কখনও কার্যকর ছিল, শুধুমাত্র অক্ষাংশ এবং দ্রাঘিমাংশের উপর ভিত্তি করে রাউটিং করলে মাঝে মাঝে সর্বোত্তম নয় এমন ড্রপ-অফ বা পিক-আপ পয়েন্ট পাওয়া যেত, বিশেষ করে বড় ভেন্যু, পার্ক বা একাধিক প্রবেশপথযুক্ত ভবনের ক্ষেত্রে। এর ফলে নিকটতম রাস্তার অংশে চলে যেতে পারত, যা সবচেয়ে সুবিধাজনক বা সঠিক প্রবেশপথ নাও হতে পারে।
উন্নত ওয়েপয়েন্ট বিকল্পগুলো আপনাকে আরও প্রাসঙ্গিক তথ্য প্রদানের সুযোগ দিয়ে এই সমস্যার সমাধান করে।
একটি নেভিগেশন পয়েন্ট টোকেন ব্যবহার করুন
প্রবেশপথ, লোডিং ডক বা নির্ধারিত পিক-আপ এলাকার মতো নির্দিষ্ট অ্যাক্সেস পয়েন্টে সবচেয়ে নির্ভুল রুটিংয়ের জন্য, আপনি একটি navigationPointToken ) ব্যবহার করতে পারেন।
জিওকোডিং এপিআই-এর ডেস্টিনেশনস মেথড কল করার মাধ্যমে এই টোকেনটি পাওয়া যায়। এটি কোনো একটি স্থানের সাথে যুক্ত একটি নির্দিষ্ট, রুটযোগ্য নেভিগেশন পয়েন্টকে নির্দেশ করে।
একটি নেভিগেশন পয়েন্ট টোকেন নির্দিষ্ট করতে:
জিওকোডিং এপিআই রেসপন্সের Destinations মেথড থেকে একটি
navigationPointTokenসংগ্রহ করুন।একটি
GMSNavigationWaypointতৈরি করার সময়navigationPointTokenটি উল্লেখ করুন।
দ্রষ্টব্য: আপনি একই সাথে একটি অবস্থান এবং প্লেসআইডি-র সাথে একটি নেভিগেশন পয়েন্ট টোকেন নির্দিষ্ট করতে পারবেন না।
সুইফট
// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3.."
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
উদ্দেশ্য-সি
GMSNavigationWaypoint *waypointTwo = [[GMSNavigationWaypoint alloc] initWithNavigationPointToek:@"sampleNavigationPointToken"
নেভিগেশন পয়েন্ট টোকেন এবং রুট টোকেন ব্যবহার করুন
আপনি জিওকোডিং এপিআই (Geocoding API) এর মাধ্যমে একটি নেভিগেশন পয়েন্ট টোকেন এবং রুটস এপিআই (Routes API) থেকে একটি রুট টোকেন সংগ্রহ করতে পারেন, এবং তারপর নেভিগেশন পয়েন্ট টোকেন ও রুট টোকেন উভয়ই নেভিগেশন এসডিকে (Navigation SDK)-তে পাঠাতে পারেন। রাইডশেয়ার বা ডেলিভারির মতো পরিস্থিতিতে এটি বেশ কার্যকর, যেখানে আপনি ট্রিপের মূল্য গণনা করার জন্য রুটস এপিআই ব্যবহার করেন এবং একটি নেভিগেশন পয়েন্ট টোকেনের নির্ভুলতা চান।
রুট টোকেনটি নেভিগেশন SDK দ্বারা নির্বাচিত রুটটিকে মূল্য নির্ধারণের জন্য ব্যবহৃত রুটের দিকে পক্ষপাতদুষ্ট করে। এর ফলে ভ্রমণের জন্য দীর্ঘতর বা হ্রস্বতর রুট ব্যবহৃত হওয়ার ঝুঁকি কমে যায়, যা ‘প্রাইস শক’ বা মূল্যের আকস্মিক পরিবর্তন ঘটাতে পারে।
ন্যাভিগেশন পয়েন্ট টোকেন ব্যবহার করে অবস্থান নির্দিষ্ট করা এবং রুট টোকেন তৈরি করার বিষয়ে আরও তথ্যের জন্য রাউটস এপিআই (Routes API) ডকুমেন্টেশন দেখুন। রুট টোকেন ব্যবহার করে কীভাবে একটি রুট পরিকল্পনা করতে হয় তা জানতে "একটি রুট পরিকল্পনা করুন" (Plan a route) অংশটি দেখুন।
এই ডায়াগ্রামটি দেখায় যে কীভাবে একটি রাইডশেয়ার বা ডেলিভারি অ্যাপ নেভিগেশন পয়েন্ট টোকেন এবং রুট টোকেন একসাথে ব্যবহার করবে:
স্থানের আইডি এবং অবস্থান একত্রিত করুন
v10.10 থেকে শুরু করে, একটি ওয়েপয়েন্ট তৈরি করার সময় আপনি প্লেস আইডি এবং অবস্থানের স্থানাঙ্ক উভয়ই প্রদান করতে পারবেন। এই পদ্ধতিটি তখন উপযোগী যখন আপনি একটি সুনির্দিষ্ট বিন্দু (অবস্থান) উল্লেখ করার পাশাপাশি পুরো স্থানটির প্রেক্ষাপটও (প্লেস আইডি) জানাতে চান। এর ফলে নেভিগেশন SDK গন্তব্য ভবনটিকে হাইলাইট করে অথবা প্লেস আইডির সাথে সম্পর্কিত কাছাকাছি দর্শনীয় স্থানগুলো দেখিয়ে একটি আরও সমৃদ্ধ পৌঁছানোর অভিজ্ঞতা প্রদান করতে পারে।
সুইফট
// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),
placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
title: "Sydney Opera House")
// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
self?.handleRouteCallback(status: routeStatus)
}
উদ্দেশ্য-সি
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];
বিবেচ্য বিষয়সমূহ:
যখন আপনি placeID এবং location উভয়ই প্রদান করেন:
- এই রুটটির প্রধান লক্ষ্য হলো নির্দিষ্ট
location। - আগমন অভিজ্ঞতা উন্নত করার জন্য
placeIdপ্রসঙ্গ হিসেবে ব্যবহৃত হয়। - বিকল্প ব্যবস্থা: যদি SDK নির্ধারণ করে যে প্রদত্ত
placeIdএমন একটি ফিচারের সাথে সম্পর্কিত যা নির্দিষ্টlocationথেকে অনেক দূরে, তাহলেplaceIdউপেক্ষা করা হবে। এই পরিস্থিতিতে, রাউটিং শুধুমাত্র সেইlocationঅগ্রসর হবে এবং স্থান-নির্দিষ্ট আগমন অভিজ্ঞতার উন্নতিগুলো উপলব্ধ হবে না।
বৈধ ওয়েপয়েন্ট কনফিগারেশনগুলির সারাংশ
| স্পেসিফিকেশন | location | placeID | navigationPointToken | রাউটিং আচরণ | গন্তব্য তুলে ধরা |
|---|---|---|---|---|---|
| শুধুমাত্র অবস্থানের স্থানাঙ্ক | সেট | অনুপস্থিত | অনুপস্থিত | নির্ধারিত স্থানাঙ্কের নিকটতম সড়ক খণ্ডে যাওয়ার পথ | গন্তব্য উচ্চ আত্মবিশ্বাসের সাথে অনুমান করা গেলে দেখানো হবে। |
| শুধুমাত্র আইডি দিন | অনুপস্থিত | সেট | অনুপস্থিত | প্লেস আইডির জন্য ডিফল্ট নেভিগেশন পয়েন্টে যাওয়ার রুট। | স্থান আইডি থেকে |
| শুধুমাত্র নেভিগেশন পয়েন্ট টোকেন | অনুপস্থিত | অনুপস্থিত | সেট | টোকেন দ্বারা চিহ্নিত সুনির্দিষ্ট নেভিগেশন পয়েন্টে যাওয়ার পথ | জিওকোডিং এপিআই অনুরোধের মূল গন্তব্য পদ্ধতিতে সংজ্ঞায়িত গন্তব্য থেকে |
| অবস্থানের স্থানাঙ্ক এবং স্থানের আইডি একত্রিত | সে | সেট | অনুপস্থিত | নির্ধারিত স্থানাঙ্কের নিকটতম সড়ক খণ্ডে যাওয়ার পথ | স্থান আইডি থেকে, যদিও স্থান আইডি অক্ষাংশ/দ্রাঘিমাংশ স্থানাঙ্ক থেকে খুব দূরে হলে তা দেখানো হয় না। |