রুট গণনার (পুনরায় রুট করা সহ) ফলে ডিফল্ট সেরা রুট হিসেবে সেই রুটটিই ফেরত আসে, যেটি অতিক্রম করতে সবচেয়ে কম সময় লাগে। কিন্তু আপনি রাউটিং কৌশল পরিবর্তন করে বিকল্প রুটগুলোর মধ্যে থেকে সংক্ষিপ্ততম রুটটিকেও ফেরত পেতে পারেন।
'সংক্ষিপ্ততর' বলতে আমাদের ডিফল্ট ব্যয় মডেলের উপর ভিত্তি করে সর্বোত্তম পথগুলোর মধ্যে সবচেয়ে সংক্ষিপ্ত পথটিকে বোঝায়। সংক্ষিপ্ততর পথটি পরম সংক্ষিপ্ততম পথ নাও হতে পারে, কারণ সেই বিকল্পটি একটি দুর্বল বিকল্প হতে পারে। উদাহরণস্বরূপ, যদি পরম সংক্ষিপ্ততম পথটি ১০ কিমি হয় এবং তা অতিক্রম করতে ৫০ মিনিট সময় লাগে, এবং অন্য একটি পথ ১৫ কিমি হয় কিন্তু তা অতিক্রম করতে মাত্র ২০ মিনিট সময় লাগে, তবে দ্বিতীয় পছন্দটিই সর্বোত্তম, কারণ পাঁচ কিমি দূরত্ব কমানোর জন্য ৩০ মিনিট ব্যয় করা একটি ভালো বিনিময় নয়।
একবার কোনো ট্রিপের জন্য রাউটিং কৌশল সেট করলে, ট্রিপটি সম্পূর্ণ না হওয়া পর্যন্ত তা পরিবর্তন হবে না। চলমান কোনো ট্রিপের রাউটিং কৌশল পরিবর্তন করতে হলে, আপনাকে গন্তব্যগুলো মুছে ফেলে নতুন রাউটিং কৌশল দিয়ে আবার নতুন করে সেট করতে হবে।
রুটের বিবরণ পাওয়া যাচ্ছে
একটি নির্দিষ্ট ওয়েপয়েন্টের জন্য কোন রুট কৌশলটি সর্বোত্তম, তা নির্ধারণ করতে ডিফল্ট সেরা রুট এবং সবচেয়ে সংক্ষিপ্ত রুট উভয়ের বিস্তারিত তথ্য পেতে getRouteInfoForDestination() ফাংশনটি কল করুন। এই বিবরণের মধ্যে গন্তব্য ওয়েপয়েন্ট পর্যন্ত সময়কাল এবং দূরত্ব অন্তর্ভুক্ত থাকে।
এই বিবরণগুলো কলব্যাকের GMSNavigationRouteInfo থেকে আসে।
উদাহরণ
নিম্নলিখিত কোড উদাহরণটি দেখায় কিভাবে দুটি রাউটিং কৌশলের প্রতিটির জন্য রাউটের বিবরণ পাওয়া যায়।
সুইফট
let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
routingOptions: routingOptions) { routeInfo in
...
}
উদ্দেশ্য-সি
GMSNavigationRoutingOptions *routingOptions =
[[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
withRoutingOptions:routingOptions
callback:^(GMSNavigationRouteInfo *routeInfo){...}];
রাউটিং কৌশল নির্ধারণ করা
আপনি GMSNavigationRoutingOptions ব্যবহার করে এবং setDestinations() কল করার সময় routingStrategy সেট করে রাউটিং কৌশল কনফিগার করতে পারেন।
routingStrategy নিম্নলিখিত এনুমারেশন মানগুলির মধ্যে একটি গ্রহণ করে:
| গণনার মান | বর্ণনা |
|---|---|
| জিএমএসন্যাভিগেশনরাউটিংস্ট্র্যাটেজিডিফল্টবেস্ট | নেভিগেশন এসডিকে-এর ডিফল্ট কস্ট মডেল অনুসারে রুটগুলোকে র্যাঙ্ক করে। এটিই ডিফল্ট রাউটিং কৌশল। |
| জিএমএসন্যাভিগেশনরাউটিংস্ট্র্যাটেজিশর্টার | দূরত্ব অনুসারে রুটগুলোকে র্যাঙ্ক করা হয়। ফেরত আসা রুটগুলোর মধ্যে সবচেয়ে ছোটটিই সর্বোচ্চ র্যাঙ্কের রুট। |
উদাহরণ
নিম্নলিখিত কোড উদাহরণটি দেখায় কিভাবে সংক্ষিপ্ত রুট রাউটিং কৌশল সেট করতে হয়।
সুইফট
let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
routingOptions: routingOptions) { routeStatus in
...
}
উদ্দেশ্য-সি
GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithRoutingStrategy:GMSNavigationRoutingStrategyShorter];
[navigator setDestinations:destinations
routingOptions:routingOptions
callback:^(GMSRouteStatus routeStatus){...}];
যে রুটগুলিতে ফেরি অন্তর্ভুক্ত আছে
ডিফল্টরূপে, iOS-এর জন্য নেভিগেশন SDK ফেরি অন্তর্ভুক্ত রুটগুলিকে বাদ দেয়। আপনি যদি আপনার রুটের অংশ হিসাবে ফেরি বিকল্পগুলি অন্তর্ভুক্ত করতে চান, তাহলে avoidsFerries কে false সেট করে এই রাউটিং প্রেফারেন্সটি পরিবর্তন করে ট্রিপটিকে ফেরি সেগমেন্টের আওতায় আনতে পারেন।
উদাহরণ
সুইফট
self.mapView.navigator?.avoidsFerries = false
উদ্দেশ্য-সি
self.mapView.navigator.avoidsFerries = NO
রুট কলআউট ফরম্যাট
সংক্ষিপ্ত রুট রাউটিং কৌশলের অধীনে, রুট বরাবর কলআউটগুলো দূরত্বের বিবরণ প্রদর্শন করে। কিন্তু আপনি এর পরিবর্তে ETA কলআউটগুলো ব্যবহার করতে পারেন।
রাউট কলআউট ফরম্যাট কনফিগার করা
আপনি GMSMapView তে routeCalloutFormat সেট করে রাউট কলআউট ফরম্যাট পরিবর্তন করতে পারেন। routeCalloutFormat নিম্নলিখিত এনুমারেশন মানগুলির মধ্যে একটি গ্রহণ করে:
| গণনার মান | বর্ণনা |
|---|---|
| GMSNavigationRouteCalloutFormatDefault | ডিফল্ট সেরা রুট রাউটিং কৌশল ব্যবহার করার সময় অবশিষ্ট সময় প্রদর্শন করে। সংক্ষিপ্ততম রুট রাউটিং কৌশল ব্যবহার করার সময় অবশিষ্ট দূরত্ব প্রদর্শন করে। |
| GMSNavigationRouteCalloutFormatTime | অবশিষ্ট সময় প্রদর্শন করে। |
| GMSNavigationRouteCalloutFormatDistance | অবশিষ্ট দূরত্ব প্রদর্শন করে। |
উদাহরণ
নিম্নলিখিত কোড উদাহরণটি দেখায় কিভাবে রাউট কলআউট ফরম্যাট কনফিগার করতে হয়।
সুইফট
self.mapView.routeCalloutFormat = .time
উদ্দেশ্য-সি
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;