ম্যাপ-ভিত্তিক নেভিগেশন নির্দেশনার জন্য ডিজাইন করা হয়নি এমন ডিভাইসে ধাপে ধাপে ডেটা ফিড শুধুমাত্র নেভিগেশন সংক্রান্ত তথ্য প্রদান করে। আপনার দেওয়া এলিমেন্ট সহ এটি আসন্ন ম্যানুভার প্রদান করে:
- আইকন (বাঁদিকে, ডানদিকে, ইউ-টার্ন)
- রাউন্ডঅ্যাবাউটে নম্বর ঘুরিয়ে দেওয়া
- রাস্তার নাম
- পরবর্তী নেভিগেশন ধাপ বা চূড়ান্ত গন্তব্যে পৌঁছানোর আনুমানিক দূরত্ব ও সময়
আপনি এক এক করে ফিড ব্যবহার করে এমন অভিজ্ঞতা তৈরি করতে পারেন যেখানে সম্পূর্ণ Navigation SDK UI উপযুক্ত নয়, যেমন ছোট স্ক্রিন ডিসপ্লে। যেমন, আপনি এটি দু-চাকার গাড়ির চালকদের জন্য ব্যবহার করতে পারেন, যেখানে আপনি শুধুমাত্র নেভিগেশন সংক্রান্ত নির্দেশিকা প্রজেক্ট করতে পারেন যাতে তারা ন্যূনতম বিভ্রান্তির সাথে আরও দ্রুত এবং আরও আত্মবিশ্বাসের সাথে তাদের গন্তব্যে পৌঁছাতে পারে।
প্রয়োজনীয় নেভিগেশন ডিসপ্লে এলিমেন্ট
প্রতিটি নেভিগেশন ধাপের প্রাথমিক ফিল্ড হল সম্পূর্ণ রাস্তার নাম,
ম্যানুভার এবং ধাপের মোট দূরত্ব, যা
GMSNavigationStepInfo-এ উপলভ্য।
সম্পূর্ণ ট্রিপের জন্য, আপনি বর্তমান স্টেপ বা গন্তব্যে পৌঁছানোর জন্য
বাকি থাকা সময় ও দূরত্ব দেখাতে চাইতে পারেন, এগুলি সবই
GMSNavigationNavInfo-এ উপলভ্য।
ডানদিকের ছবিতে এই ধরনের প্রয়োজনীয় নেভিগেশন এলিমেন্টের উদাহরণ দেখানো হয়েছে।
ইভেন্ট লিসনার সেট-আপ করা
শুধুমাত্র নেভিগেশন ডেটা ব্যবহার করতে, আপনাকে didChangeNavInfo ইভেন্টের জন্য একটি ইভেন্ট লিসেনার প্রয়োগ করতে হবে। ইভেন্ট লিসেনারের মধ্যে, আপনার ব্যবহারকারীদের ধাপে ধাপে নেভিগেশন প্রদান করতে ট্রিপ এবং
ধাপের তথ্য অ্যাক্সেস করুন।
ইভেন্ট হ্যান্ডলার প্রয়োগ করতে, ম্যাপের ভিউ কন্ট্রোলারকে অবশ্যই
GMSNavigatorListener
প্রোটোকল প্রয়োগ করতে হবে। iOS-এর জন্য Navigation SDK-তে ইভেন্ট ম্যানেজ করার ব্যাপারে বিস্তারিত তথ্যের জন্য, নেভিগেশন ইভেন্ট শুনুন দেখুন।
didChangeNavInfo ইভেন্ট ম্যানেজ করা
আপনার অ্যাপে ধাপে ধাপে নেভিগেশন সংক্রান্ত সহায়তা যোগ করতে didChangeNavInfo ইভেন্টের জন্য একটি লিসনার তৈরি করুন।
ইভেন্ট লিসনারে, ধাপে ধাপে নেভিগেশন কন্ট্রোল করতে নিম্নলিখিত ক্লাস ও এনাম ব্যবহার করুন:
GMSNavigationNavInfo— নেভিগেশনের অবস্থা সম্পর্কে ক্লাস নির্ধারণকারী তথ্য।GMSNavigationStepInfo— নেভিগেশন রুট বরাবর একটি ধাপ সম্পর্কে তথ্য সংজ্ঞায়িত করা ক্লাস।GMSNavigationNavState— এনরুট, রিরুট করা বা বন্ধ করার মতো নেভিগেশনের বর্তমান অবস্থা নির্ধারণকারী এনুম।GMSNavigationDrivingSide— এই ধাপটি ডানদিকে-ড্রাইভ-করুন নাকি বাঁদিকে-ড্রাইভ-করুন রুটে আছে তা নির্ধারণকারী Enum।GMSNavigationManeuver— Enum যা নেভিগেশন অ্যাকশনকে ডিফাইন করে, যেমন বাঁদিকে বা ডানদিকে ঘোরানো।
didChangeNavInfo ইভেন্টের জন্য ইভেন্ট লিসনারের উদাহরণ নিচে দেখানো হল:
Swift
// ViewController.swift class SomeViewController: UIViewController { ... mapView.navigator?.add(self); ... } extension SomeViewController: GMSNavigatorListener { func navigator(_ navigator: GMSNavigator, didUpdateNavInfo navInfo: GMSNavigationNavInfo) { // Get the current step information if navInfo.navState == .enroute { if let currentStep = navInfo.currentStep { ... roadNameLabel.text = currentStep.simpleRoadName ... } } } }
Objective-C
// ViewController.h @interface SomeViewController () <GMSNavigatorListener> @end // ViewController.m @implementation SomeViewController // Some initialization code. ... { ... [_mapView.navigator addListener:self]; ... } #pragma mark GMSNavigatorListener - (void)navigator:(GMSNavigator *)navigator didUpdateNavInfo:(GMSNavigationNavInfo *)navInfo { // Get the current step information if (navInfo.navState == GMSNavigationNavStateEnroute) { GMSNavigationStepInfo *currentStep = navInfo.currentStep; if (currentStep) { ... roadNameLabel.text = currentStep.simpleRoadName; ... } } ... }
নেভিগেশন স্টেট
নেভিগেশনের বর্তমান অবস্থা জানতে
GMSNavigationNavInfo-এর navState প্রপার্টি ব্যবহার করুন, যা নিম্নলিখিতগুলির মধ্যে একটি:
Enroute -
GMSNavigationNavStateEnrouteস্ট্যাটাস থেকে বোঝা যায় যে গাইডেড নেভিগেশন অ্যাক্টিভ আছে এবং ব্যবহারকারী প্রদত্ত রুটে আছেন। বর্তমান আসন্ন ম্যানুভার স্টেপ সম্পর্কে তথ্য উপলভ্য আছে।রুট পরিবর্তন করা হচ্ছে -
GMSNavigationNavStateReroutingমানে হল নেভিগেশন প্রক্রিয়া চলছে, কিন্তু নেভিগেটর একটি নতুন রুট খুঁজছে। আসন্ন ম্যানুভার ধাপ উপলভ্য নেই, কারণ এখনও কোনও নতুন রুট নেই।বন্ধ হয়ে গেছে -
GMSNavigationNavStateStoppedমানে নেভিগেশন শেষ হয়ে গেছে। যেমন, ব্যবহারকারী অ্যাপে নেভিগেশন থেকে বেরিয়ে এলে নেভিগেশন বন্ধ হয়ে যায়। স্যাম্পেল অ্যাপে,GMSNavigationNavStateStoppedস্টেট নেভিগেশন তথ্য ডিসপ্লে মুছে দেয় যাতে দীর্ঘস্থায়ী ধাপের নির্দেশাবলী দেখানো না হয়।
লেন সংক্রান্ত নির্দেশিকা
নেভিগেশন SDK, নেভিগেশন টার্ন কার্ডে লেনকে
GMSNavigationLane এবং GMSNavigationLaneDirection ডেটা অবজেক্ট হিসেবে দেখায়। A
GMSNavigationLane অবজেক্ট নেভিগেশনের সময় একটি নির্দিষ্ট লেনকে দেখায় এবং এতে
GMSNavigationLaneDirection অবজেক্টের একটি তালিকা থাকে যা এই লেন থেকে নেওয়া
যায় এমন সব টার্নকে বর্ণনা করে।
কোনও লেনে ড্রাইভারকে কোন দিকে যেতে হবে তা
recommended ফিল্ড ব্যবহার করে চিহ্নিত করা হয়।

লেন গাইডেন্সের উদাহরণ
নিচের স্নিপেটটি আগের স্ক্রিনশটে দেখানো লেনের ডেটা রিপ্রেজেন্টেশন ব্যাখ্যা করে।
// Lane 1
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 2
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 3
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false}]
// Lane 4
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false},
{/*GMSNavigationLaneShape=*/ GMSNavigationLaneShapeNormalRight, /*recommended=*/ false}]
লেন গাইডেন্স ছবি
GMSNavigationStepInfo-এর মাধ্যমে জানানো প্রতিটি নেভিগেশন ধাপের জন্য নেভিগেশন SDK লেন ইমেজ তৈরি করতে সাহায্য করে। এইসব আইকন CarPlay-এর ছবি সাইজ করার
নির্দেশিকা মেনে চলে।
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];
কৌশলগত চালের জন্য আইকন তৈরি করা
![]()
GMSNavigationManeuver
enum নেভিগেট করার সময় প্রতিটি সম্ভাব্য ম্যানুভারকে সংজ্ঞায়িত করে এবং আপনি
GMSNavigationStepInfo-এর maneuver প্রপার্টি থেকে
প্রদত্ত ধাপের জন্য ম্যানুভার পেতে পারেন।
আপনাকে অবশ্যই ম্যানুভার আইকন তৈরি করতে হবে এবং সেগুলিকে সংশ্লিষ্ট ম্যানুভারের সাথে পেয়ার করতে হবে।
কিছু ম্যানুভারের জন্য, আপনি একটি আইকনে ওয়ান-টু-ওয়ান ম্যাপিং সেট-আপ করতে পারেন, যেমন
GMSNavigationManeuverDestinationLeft এবং
GMSNavigationManeuverDestinationRight। তবে, যেহেতু কিছু ম্যানুভারের সাথে অন্যান্য ম্যানুভারের
বৈশিষ্ট্য শেয়ার করা হয়, তাই আপনি একটি আইকনে একাধিক
ম্যানুভার ম্যাপ করতে চাইতে পারেন। যেমন, GMSNavigationManeuverTurnLeft এবং
GMSNavigationManeuverOnRampLeft, দুটিই বাঁদিকে ঘোরার আইকনে ম্যাপ করা যেতে পারে।
কিছু ম্যানুভারে অতিরিক্ত "ঘড়ির কাঁটার দিকে" বা "ঘড়ির কাঁটার বিপরীতে" লেবেল থাকে, যা SDK কোনও দেশের ড্রাইভিং সাইডের উপর ভিত্তি করে নির্ধারণ করে। যেমন, যেসব দেশে রাস্তার বাঁদিক দিয়ে গাড়ি চালানো হয়, সেখানে ড্রাইভাররা ঘড়ির কাঁটার দিকে রাউন্ডঅ্যাবাউট বা ইউ-টার্ন নেন, অন্যদিকে রাস্তার ডানদিক দিয়ে গাড়ি চালানো হয় এমন দেশে ঘড়ির কাঁটার বিপরীতে রাউন্ডঅ্যাবাউট বা ইউ-টার্ন নেওয়া হয়। বাঁদিকে বা ডানদিকে ট্রাফিক থাকলে, কোনও ম্যানুভার হয় কিনা তা Navigation SDK শনাক্ত করে এবং উপযুক্ত ম্যানুভার আউটপুট করে। তাই, ঘড়ির কাঁটার দিকে এবং ঘড়ির কাঁটার বিপরীতে ম্যানুভারের জন্য আপনার ম্যানুভার আইকন আলাদা হতে পারে।
বিভিন্ন ম্যানুভারের জন্য উদাহরণ আইকন দেখতে বড় করুন
| স্যাম্পেল আইকন | এক এক করে কৌশল |
|---|---|
![]() |
DEPARTUNKNOWN |
![]() |
STRAIGHTON_RAMP_UNSPECIFIEDOFF_RAMP_UNSPECIFIEDNAME_CHANGE
|
![]() |
TURN_RIGHTON_RAMP_RIGHT
|
![]() |
TURN_LEFTON_RAMP_LEFT
|
![]() |
TURN_SLIGHT_RIGHTON_RAMP_SLIGHT_RIGHTOFF_RAMP_SLIGHT_RIGHT
|
![]() |
TURN_SLIGHT_LEFTON_RAMP_SLIGHT_LEFTOFF_RAMP_SLIGHT_LEFT
|
![]() |
TURN_SHARP_RIGHTON_RAMP_SHARP_RIGHTOFF_RAMP_SHARP_RIGHT
|
![]() |
TURN_SHARP_LEFTON_RAMP_SHARP_LEFTOFF_RAMP_SHARP_LEFT
|
![]() |
TURN_U_TURN_COUNTERCLOCKWISEON_RAMP_U_TURN_COUNTERCLOCKWISEOFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
![]() |
TURN_U_TURN_CLOCKWISEON_RAMP_U_TURN_CLOCKWISEOFF_RAMP_U_TURN_CLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_RIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_RIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_RIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_RIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_RIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_RIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_STRAIGHT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_STRAIGHT_CLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_LEFT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SLIGHT_LEFT_CLOCKWISE
|
![]() |
ROUNDABOUT_LEFT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_LEFT_CLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_LEFT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_SHARP_LEFT_CLOCKWISE
|
![]() |
ROUNDABOUT_U_TURN_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_U_TURN_CLOCKWISE
|
![]() |
ROUNDABOUT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_CLOCKWISE
|
![]() |
ROUNDABOUT_EXIT_COUNTERCLOCKWISE
|
![]() |
ROUNDABOUT_EXIT_CLOCKWISE
|
![]() |
MERGE_RIGHTOFF_RAMP_RIGHT
|
![]() |
MERGE_LEFTOFF_RAMP_LEFT
|
![]() |
FORK_RIGHTTURN_KEEP_RIGHTON_RAMP_KEEP_RIGHTOFF_RAMP_KEEP_RIGHT
|
![]() |
FORK_LEFTTURN_KEEP_LEFTON_RAMP_KEEP_LEFTOFF_RAMP_KEEP_LEFT
|
![]() |
MERGE_UNSPECIFIED
|
![]() |
DESTINATION
|
![]() |
DESTINATION_RIGHT
|
![]() |
DESTINATION_LEFT
|
![]() |
FERRY_BOAT
|
![]() |
FERRY_TRAIN
|
জেনারেট করা আইকন ব্যবহার করা
Navigation SDK, প্রদত্ত
GMSNavigationStepInfo-এর জন্য ম্যানুভার আইকন তৈরি করতে সাহায্য করে। এইসব আইকন CarPlay-এর ছবির সাইজ সংক্রান্ত
নির্দেশিকা মেনে চলে।
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];







































