একটি টার্ন-বাই-টার্ন ডেটা ফিড ম্যাপ-ভিত্তিক নেভিগেশন নির্দেশিকা জন্য ডিজাইন করা হয়নি এমন ডিভাইসগুলিতে শুধুমাত্র নেভিগেশন তথ্য প্রদান করে। এটি আপনার সরবরাহকারী উপাদানগুলির সাথে আসন্ন কৌশলগুলি সরবরাহ করে:
- আইকন (বাম, ডান, ইউ-টার্ন)
- বৃত্তাকার মধ্যে সংখ্যা চালু
- রাস্তার নাম
- পরবর্তী নেভিগেশন ধাপ বা চূড়ান্ত গন্তব্যে আনুমানিক দূরত্ব এবং সময়
আপনি এমন অভিজ্ঞতা তৈরি করতে পালাক্রমে ফিড ব্যবহার করতে পারেন যেখানে সম্পূর্ণ নেভিগেশন SDK UI উপযুক্ত নয়, যেমন ছোট পর্দার প্রদর্শনের জন্য। উদাহরণস্বরূপ, আপনি এটি দুই চাকার যানবাহন চালকদের জন্য ব্যবহার করতে পারেন, যেখানে আপনি ন্যূনতম বিভ্রান্তির সাথে দ্রুত এবং আরও আত্মবিশ্বাসের সাথে তাদের গন্তব্যে পৌঁছাতে সাহায্য করার জন্য শুধুমাত্র নেভিগেশন নির্দেশিকা প্রজেক্ট করতে পারেন।
অপরিহার্য নেভিগেশন প্রদর্শন উপাদান
প্রতিটি নেভিগেশন ধাপের প্রাথমিক ক্ষেত্র হল পুরো রাস্তার নাম, কৌশল এবং ধাপের মোট দূরত্ব, যা GMSNavigationStepInfo এ উপলব্ধ।
সামগ্রিক ভ্রমণের জন্য, আপনি বর্তমান ধাপে বা গন্তব্যের অবশিষ্ট সময় এবং দূরত্ব প্রদর্শন করতে চাইতে পারেন, যার সবকটিই GMSNavigationNavInfo- এ উপলব্ধ। ডানদিকের ছবিটি এই প্রয়োজনীয় নেভিগেশন উপাদানগুলির একটি উদাহরণ দেখায়।
একটি ইভেন্ট শ্রোতা সেট আপ করুন
শুধুমাত্র-নেভিগেশন ডেটা ব্যবহার করতে, আপনাকে didChangeNavInfo
ইভেন্টের জন্য একটি ইভেন্ট লিসেনার বাস্তবায়ন করতে হবে। ইভেন্ট শ্রোতার মধ্যে, আপনার ব্যবহারকারীদের জন্য পালাক্রমে নেভিগেশন প্রদান করতে ট্রিপ এবং ধাপের তথ্য অ্যাক্সেস করুন।
ইভেন্ট হ্যান্ডলার বাস্তবায়ন করতে, মানচিত্রের ভিউ কন্ট্রোলারকে অবশ্যই GMSNavigatorListener
প্রোটোকল প্রয়োগ করতে হবে। iOS-এর জন্য নেভিগেশন SDK-এ ইভেন্টগুলি পরিচালনার বিষয়ে বিস্তারিত তথ্যের জন্য, নেভিগেশন ইভেন্টগুলির জন্য শুনুন দেখুন।
didChangeNavInfo
ইভেন্ট পরিচালনা করা
আপনার অ্যাপে পালাক্রমে সমর্থন যোগ করতে didChangeNavInfo
ইভেন্টের জন্য একজন শ্রোতা তৈরি করুন। ইভেন্ট লিসেনারে, টার্ন-বাই-টার্ন নেভিগেশন নিয়ন্ত্রণ করতে নিম্নলিখিত ক্লাস এবং এনামগুলি ব্যবহার করুন:
GMSNavigationNavInfo
— ন্যাভিগেশন অবস্থা সম্পর্কে ক্লাস সংজ্ঞায়িত তথ্য।GMSNavigationStepInfo
— একটি নেভিগেশন রুট বরাবর একটি একক ধাপ সম্পর্কে তথ্য সংজ্ঞায়িত করে।GMSNavigationNavState
— Enum একটি ন্যাভিগেশনের বর্তমান অবস্থাকে সংজ্ঞায়িত করে, যেমন পথ চলা, পুনরায় রুট করা বা থামানো।GMSNavigationDrivingSide
— এই ধাপটি একটি ড্রাইভ-অন-ডান বা ড্রাইভ-অন-বাম রুটে কিনা তা নির্ধারণ করে।GMSNavigationManeuver
— Enum নেভিগেশন অ্যাকশনের সংজ্ঞা দেয়, যেমন বাম দিকে ঘুরুন বা ডানদিকে ঘুরুন।
didChangeNavInfo
ইভেন্টের জন্য ইভেন্ট শ্রোতাদের উদাহরণ নিচে দেখানো হল:
উদ্দেশ্য-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; ... } } ... }
সুইফট
// 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 ... } } } }
নেভিগেশন রাষ্ট্র
নেভিগেশনের বর্তমান অবস্থা পেতে GMSNavigationNavInfo
এর navState
প্রপার্টি ব্যবহার করুন, যা নিম্নলিখিতগুলির মধ্যে একটি:
পথে পথে -
GMSNavigationNavStateEnroute
অবস্থার অর্থ হল নির্দেশিত নেভিগেশন বর্তমানে সক্রিয় এবং ব্যবহারকারী প্রদত্ত রুটে রয়েছে। বর্তমান আসন্ন কৌশল পদক্ষেপ সম্পর্কে তথ্য উপলব্ধ.রিরাউটিং -
GMSNavigationNavStateRerouting
অর্থ হল নেভিগেশন চলছে, কিন্তু নেভিগেটর একটি নতুন রুট খুঁজছে। আসন্ন কৌশল পদক্ষেপ উপলব্ধ নয়, কারণ এখনও কোনো নতুন রুট নেই।স্টপড -
GMSNavigationNavStateStopped
মানে নেভিগেশন শেষ হয়েছে৷ উদাহরণস্বরূপ, ব্যবহারকারী যখন অ্যাপে নেভিগেশন থেকে বেরিয়ে যান তখন নেভিগেশন বন্ধ হয়ে যায়। স্যাম্পল অ্যাপে, একটিGMSNavigationNavStateStopped
স্টেট নেভিগেশন ইনফো ডিসপ্লে সাফ করে যাতে দীর্ঘস্থায়ী ধাপের নির্দেশাবলী প্রদর্শিত হতে না পারে।
লেন নির্দেশিকা
ন্যাভিগেশন SDK নেভিগেশন টার্ন কার্ডে লেনগুলিকে GMSNavigationLane
এবং GMSNavigationLaneDirection
ডেটা অবজেক্ট হিসাবে উপস্থাপন করে। একটি 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}]
লেন নির্দেশিকা ইমেজ
ন্যাভিগেশন SDK GMSNavigationStepInfo
দ্বারা জানানো প্রতিটি নেভিগেশন ধাপের জন্য লেন চিত্র তৈরি করতে সহায়তা করে। এই আইকনগুলি CarPlay-এর ইমেজ সাইজিং নির্দেশিকায় মানানসই।
সুইফট
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
উদ্দেশ্য-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 একটি দেশের ড্রাইভিং সাইডের উপর ভিত্তি করে নির্ধারণ করে। উদাহরণস্বরূপ, যেসব দেশে গাড়ি চালানো রাস্তার বাম দিকে, চালকরা ঘড়ির কাঁটার দিকে একটি রাউন্ডঅবাউট বা ইউ-টার্ন নেয়, যেখানে রাস্তার ডানদিকের দেশগুলি ঘড়ির কাঁটার বিপরীত দিকে যায়। নেভিগেশন SDK শনাক্ত করে যে বাম- বা ডান-পাশের ট্র্যাফিকের মধ্যে একটি কৌশল সংঘটিত হয় এবং উপযুক্ত কৌশল আউটপুট করে। অতএব, আপনার কৌশল আইকন ঘড়ির কাঁটার বিপরীতে ঘড়ির কাঁটার বিপরীতে কৌশলের জন্য আলাদা হতে পারে।
বিভিন্ন কৌশলের উদাহরণ আইকন দেখতে প্রসারিত করুন
নমুনা আইকন | টার্ন-বাই-টার্ন ম্যানুভার |
---|---|
DEPART UNKNOWN | |
STRAIGHT ON_RAMP_UNSPECIFIED OFF_RAMP_UNSPECIFIED NAME_CHANGE | |
TURN_RIGHT ON_RAMP_RIGHT | |
TURN_LEFT ON_RAMP_LEFT | |
TURN_SLIGHT_RIGHT ON_RAMP_SLIGHT_RIGHT OFF_RAMP_SLIGHT_RIGHT | |
TURN_SLIGHT_LEFT ON_RAMP_SLIGHT_LEFT OFF_RAMP_SLIGHT_LEFT | |
TURN_SHARP_RIGHT ON_RAMP_SHARP_RIGHT OFF_RAMP_SHARP_RIGHT | |
TURN_SHARP_LEFT ON_RAMP_SHARP_LEFT OFF_RAMP_SHARP_LEFT | |
TURN_U_TURN_COUNTERCLOCKWISE ON_RAMP_U_TURN_COUNTERCLOCKWISE OFF_RAMP_U_TURN_COUNTERCLOCKWISE | |
TURN_U_TURN_CLOCKWISE ON_RAMP_U_TURN_CLOCKWISE OFF_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_RIGHT OFF_RAMP_RIGHT | |
MERGE_LEFT OFF_RAMP_LEFT | |
FORK_RIGHT TURN_KEEP_RIGHT ON_RAMP_KEEP_RIGHT OFF_RAMP_KEEP_RIGHT | |
FORK_LEFT TURN_KEEP_LEFT ON_RAMP_KEEP_LEFT OFF_RAMP_KEEP_LEFT | |
MERGE_UNSPECIFIED | |
DESTINATION | |
DESTINATION_RIGHT | |
DESTINATION_LEFT | |
FERRY_BOAT | |
FERRY_TRAIN |
তৈরি আইকন ব্যবহার করুন
নেভিগেশন SDK একটি প্রদত্ত GMSNavigationStepInfo
এর জন্য ম্যানুভার আইকন তৈরি করতে সহায়তা করে। এই আইকন CarPlay ইমেজ সাইজিং নির্দেশিকা মাপসই.
সুইফট
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
উদ্দেশ্য-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];