নেভিগেশন ইভেন্টের জন্য শুনুন

ব্যবহারকারীর রুটে নেভিগেট করার সাথে সাথে পরিবর্তিত বিভিন্ন ইভেন্ট শুনতে এবং প্রতিক্রিয়া জানাতে আপনার অ্যাপকে সক্ষম করতে এই নির্দেশিকাটি ব্যবহার করুন। এই নির্দেশিকাটি একটি রুট সংজ্ঞায়িত করে না, শুধুমাত্র একটি রুট বরাবর ইভেন্টগুলির প্রতিক্রিয়া জানায়৷

ওভারভিউ

iOS-এর জন্য নেভিগেশন SDK আপনাকে ব্যবহারকারীর অবস্থানের সাথে যুক্ত শ্রোতাদের এবং রুট বরাবর অবস্থা এবং গুরুত্বপূর্ণ সময় এবং দূরত্বের ডেটা সরবরাহ করে। মানচিত্রের ভিউ কন্ট্রোলারে, আপনার অ্যাপটিকে এই শ্রোতাদের জন্য প্রোটোকল গ্রহণ করতে হবে: GMSRoadSnappedLocationProviderListener এবং GMSNavigatorListener

এই তালিকাটি নেভিগেশন ইভেন্টগুলির জন্য উপলব্ধ শ্রোতা পদ্ধতিগুলি দেখায়:

  • GMSNavigatorListener.didArriveAtWaypoint , একটি গন্তব্যে পৌঁছে গেলে ট্রিগার হয়।
  • GMSNavigatorListener.navigatorDidChangeRoute , যখন রুট পরিবর্তন হয় তখন ট্রিগার হয়।
  • GMSNavigatorListener.didUpdateRemainingTime , নির্দেশিকা সক্রিয় থাকাকালীন পরবর্তী গন্তব্য পরিবর্তনের সময় হিসাবে বারবার বলা হয়।
  • GMSNavigatorListener.didUpdateRemainingDistance , নির্দেশিকা সক্রিয় থাকাকালীন পরবর্তী গন্তব্যের দূরত্ব পরিবর্তন হিসাবে বারবার বলা হয়।
  • GMSNavigatorListener.didUpdateDelayCategory , নির্দেশিকা সক্রিয় থাকাকালীন পরবর্তী গন্তব্যে বিলম্বের বিভাগ পরিবর্তিত হলে বলা হয়।
  • GMSNavigatorListener.didChangeSuggestedLightingMode , যখন আনুমানিক আলোর অবস্থা আপডেট করা হয় তখন ট্রিগার হয়৷ উদাহরণস্বরূপ, যখন ব্যবহারকারীর বর্তমান অবস্থানে রাত পড়ে তখন আলোর পরিবর্তন হয়।
  • GMSNavigatorListener.didUpdateSpeedingPercentage , চালক যখন গতিসীমা অতিক্রম করে তখন ট্রিগার হয়।
  • GMSRoadSnappedLocationProviderListener.didUpdateLocation , ব্যবহারকারীর অবস্থান পরিবর্তনের সাথে সাথে বারবার বলা হয়।

কোড দেখুন

প্রয়োজনীয় প্রোটোকলের সাথে সামঞ্জস্য ঘোষণা করা

নেভিগেশন পদ্ধতি প্রয়োগ করার আগে, ভিউ কন্ট্রোলারকে অবশ্যই প্রোটোকলগুলি গ্রহণ করতে হবে:

সুইফট

ক্লাস ভিউ কন্ট্রোলার: UIViewController, GMSNavigatorListener, GMSRoadSnappedLocationProviderListener {

উদ্দেশ্য গ

@ইন্টারফেস ভিউ কন্ট্রোলার ()

@শেষ

নেভিগেশন প্রোটোকল গ্রহণ করার পরে, শ্রোতাদের ভিউ কন্ট্রোলারে সেট করুন। উদাহরণস্বরূপ, আপনি viewDidLoad() পদ্ধতিতে নিম্নলিখিত কোড যোগ করতে পারেন।

সুইফট

mapView.navigator?.add(self) mapView.roadSnappedLocationProvider?.add(self)

উদ্দেশ্য গ

[_mapView.navigator addListener:self]; [_mapView.roadSnappedLocationProvider addListener:self];

অবস্থান আপডেট গ্রহণ বা বন্ধ করা

ম্যাপে ব্যবহারকারীর অগ্রগতি দেখানোর জন্য অবস্থান আপডেটের প্রয়োজন।

location উদাহরণ নিম্নলিখিত বৈশিষ্ট্যগুলিকে প্রকাশ করে:

অবস্থান সম্পত্তি বর্ণনা
উচ্চতা বর্তমান উচ্চতা।
coordinate.latitude বর্তমান রাস্তার স্ন্যাপড অক্ষাংশ স্থানাঙ্ক।
coordinate.longitude বর্তমান রাস্তা-ছাড়া দ্রাঘিমাংশ স্থানাঙ্ক।
অবশ্যই ডিগ্রী বর্তমান ভারবহন.
গতি বর্তমান গতি.
টাইমস্ট্যাম্প বর্তমান পড়ার তারিখ/সময়।

ক্রমাগত অবস্থানের আপডেট পেতে, mapView.roadSnappedLocationProvider.startUpdatingLocation এ কল করুন এবং didUpdateLocation ইভেন্টটি পরিচালনা করতে GMSRoadSnappedLocationProviderListener ব্যবহার করুন।

নিম্নলিখিত উদাহরণ দেখায় কলিং startUpdatingLocation :

সুইফট

mapView.roadSnappedLocationProvider.startUpdatingLocation()

উদ্দেশ্য গ

[_mapView.roadSnappedLocationProvider startUpdatingLocation];

নিম্নলিখিত কোডটি একটি GMSRoadSnappedLocationProviderListener তৈরি করে যা didUpdateLocation ইভেন্ট পরিচালনা করে।

সুইফট

func locationProvider(_ locationProvider: GMSRoadSnappedLocationProvider, did Update location: CLLocation) { print("স্থান: (location.description)") }

উদ্দেশ্য গ

  • (void)locationProvider:(GMSRoadSnappedLocationProvider*)locationProvider didUpdateLocation:(CLLocation *)location { NSLog(@"Location: %@", location.description); }

অ্যাপটি ব্যাকগ্রাউন্ডে থাকা অবস্থায় অবস্থানের আপডেট পেতে, allowsBackgroundLocationUpdates সত্যে সেট করুন:

সুইফট

mapView.roadSnappedLocationProvider.allowsBackgroundLocationUpdates = সত্য

উদ্দেশ্য গ

_mapView.roadSnappedLocationProvider.allowsBackgroundLocationUpdates = হ্যাঁ;

আগমন ঘটনা সনাক্ত করা

কোন গন্তব্যে পৌঁছানো হয়েছে তা শনাক্ত করতে আপনার অ্যাপ didArriveAtWaypoint ইভেন্ট ব্যবহার করে। আপনি গাইডেন্স পুনরায় শুরু করতে পারেন এবং continueToNextDestination() এ কল করে এবং তারপর নির্দেশিকা পুনরায় সক্ষম করে পরবর্তী ওয়েপয়েন্টে যেতে পারেন। continueToNextDestination() কল করার পরে আপনার অ্যাপটিকে অবশ্যই নির্দেশিকা পুনরায় সক্ষম করতে হবে।

অ্যাপটি continueToNextDestination এ কল করার পরে, নেভিগেটরের কাছে আর আগের গন্তব্য সম্পর্কে ডেটা থাকে না। আপনি যদি রুট লেগ সম্পর্কে তথ্য বিশ্লেষণ করতে চান, continueToNextDestination() এ কল করার আগে আপনাকে অবশ্যই নেভিগেটর থেকে এটি পুনরুদ্ধার করতে হবে।

নিম্নলিখিত কোড উদাহরণ didArriveAtWaypoint ইভেন্ট পরিচালনা করার একটি পদ্ধতি দেখায়:

সুইফট

func navigator(_ navigator: GMSNavigator, didArriveAt waypoint: GMSNavigationWaypoint) { print("আপনি এখানে পৌঁছেছেন: (waypoint.title)") mapView.navigator?.continueToNextDestination() mapView.navigator?.isGuidanceActive = true}

উদ্দেশ্য গ

  • (void)নেভিগেটর:(GMSNavigator *)navigator didArriveAtWaypoint:(GMSNavigationWaypoint *)waypoint { NSLog(@"আপনি এখানে পৌঁছেছেন: %@", waypoint.title); [_mapView.navigator continueToNextDestination]; _mapView.navigator.guidanceActive = হ্যাঁ; }

রুট পরিবর্তনের আপডেট গ্রহণ করা হচ্ছে

যখনই রুট পরিবর্তন করা হয় তখন একটি বিজ্ঞপ্তি পেতে, navigatorDidChangeRoute ইভেন্ট পরিচালনা করার জন্য একটি পদ্ধতি তৈরি করুন। আপনি GMSNavigator এর routeLegs এবং currentRouteLeg বৈশিষ্ট্য ব্যবহার করে নতুন রুট অ্যাক্সেস করতে পারেন।

সুইফট

func navigatorDidChangeRoute(_ navigator: GMSNavigator) { print("রুট পরিবর্তন হয়েছে।") }

উদ্দেশ্য গ

  • (void)navigatorDidChangeRoute:(GMSNavigator *)নেভিগেটর { NSLog(@"রুট পরিবর্তিত হয়েছে।"); }

গন্তব্য আপডেট সময় প্রাপ্তি

গন্তব্য আপডেটে ক্রমাগত সময় পেতে, didUpdateRemainingTime ইভেন্টটি পরিচালনা করার জন্য একটি পদ্ধতি তৈরি করুন। time প্যারামিটার আনুমানিক সময় প্রদান করে, সেকেন্ডে, পরবর্তী গন্তব্যে পৌঁছানো পর্যন্ত।

সুইফট

func navigator(_ navigator: GMSNavigator, didUpdateRemainingTime time: TimeInterval) { print("সময় পরের গন্তব্যে যাওয়ার সময়: (সময়)") }

উদ্দেশ্য গ

  • (void)নেভিগেটর:(GMSNavigator *)Navigator didUpdateRemainingTime:(NSTimeInterval)time { NSLog(@"পরবর্তী গন্তব্যে যাওয়ার সময়: %f", সময়); }

পরবর্তী গন্তব্যে আনুমানিক সময়ের ন্যূনতম পরিবর্তন সেট করতে, GMSNavigatortimeUpdateThreshold বৈশিষ্ট্য সেট করুন। মান সেকেন্ডে নির্দিষ্ট করা হয়. যদি এই সম্পত্তি সেট করা না থাকে, পরিষেবাগুলি এক সেকেন্ডের একটি ডিফল্ট মান ব্যবহার করে।

সুইফট

নেভিগেটর?.timeUpdateThreshold = 10

উদ্দেশ্য গ

navigator.timeUpdateThreshold = 10;

গন্তব্য আপডেট দূরত্ব গ্রহণ

গন্তব্য আপডেটে ক্রমাগত দূরত্ব পেতে, didUpdateRemainingDistance ইভেন্টটি পরিচালনা করার জন্য একটি পদ্ধতি তৈরি করুন। distance প্যারামিটারটি পরবর্তী গন্তব্যে মিটারে আনুমানিক দূরত্ব প্রদান করে।

সুইফট

func navigator(_ navigator: GMSNavigator, didUpdateRemainingDistance দূরত্ব: CLLocationDistance) { let miles = দূরত্ব * 0.00062137 print("পরবর্তী গন্তব্যের দূরত্ব: (মাইল) মাইল।") }

উদ্দেশ্য গ

  • (void)নেভিগেটর:(GMSNavigator*)Navigator didUpdateRemainingDistance:(CLLocationDistance)দূরত্ব { ডবল মাইল = দূরত্ব * 0.00062137; NSLog(@"%@", [NSString stringWithFormat:@"পরবর্তী গন্তব্যের দূরত্ব: %.2f।", মাইল]); }

পরবর্তী গন্তব্যে আনুমানিক দূরত্বের ন্যূনতম পরিবর্তন সেট করতে, GMSNavigatordistanceUpdateThreshold প্রপার্টি সেট করুন (মান মিটারে নির্দিষ্ট করা আছে)। এই সম্পত্তি সেট করা না থাকলে, পরিষেবাগুলি এক মিটারের একটি ডিফল্ট মান ব্যবহার করে৷

সুইফট

নেভিগেটর?.distanceUpdateThreshold = 100

উদ্দেশ্য গ

navigator.distanceUpdateThreshold = 100;

ট্রাফিক আপডেট গ্রহণ

অবশিষ্ট রুটের ট্রাফিক প্রবাহের ক্রমাগত আপডেট পেতে, didUpdateDelayCategory ইভেন্টটি পরিচালনা করার জন্য একটি পদ্ধতি তৈরি করুন। delayCategoryToNextDestination এ একটি কল GMSNavigationDelayCategory প্রদান করে যা 0 থেকে 3 এর মান প্রদান করে। ক্যাটাগরির আপডেটগুলি অ্যাপ ব্যবহারকারীর বর্তমান অবস্থানের উপর ভিত্তি করে করা হয়। ট্র্যাফিক ডেটা অনুপলব্ধ হলে, GMSNavigationDelayCategory 0 ফেরত দেয়। সংখ্যা, 1-3, হালকা থেকে ভারী প্রবাহ বৃদ্ধি নির্দেশ করে।

সুইফট

func navigator(_ navigator: GMSNavigator, didUpdate delayCategory: GMSNavigationDelayCategory) { print("পরবর্তী গন্তব্যে ট্রাফিক প্রবাহ: (delayCategory)") }

উদ্দেশ্য গ

  • (void)নেভিগেটর:(GMSNavigator *)নেভিগেটর didUpdateDelayCategory:(GMSNavigationDelayCategory)delayCategory { NSLog(@"পরবর্তী গন্তব্যে ট্রাফিক প্রবাহ: %ld", (দীর্ঘ)বিলম্ব বিভাগ); }

GMSNavigationDelayCategory প্রপার্টি নিম্নলিখিত বিলম্বের স্তরগুলিকে প্রকাশ করে:

বিলম্ব বিভাগ বর্ণনা
GMSNavigationDelayCategoryNoData 0 - অনুপলব্ধ, ট্রাফিকের জন্য কোন ডেটা বা:
পথ.
GMSNavigationDelayCategory Heavy 1 - ভারী।
GMSNavigationDelayCategoryMedium 2 - মাঝারি।
GMSNavigationDelayCategoryLight 3 - হালকা।

দ্রুতগতির আপডেট গ্রহণ করা হচ্ছে

ড্রাইভার যখন গতিসীমা অতিক্রম করে তখন আপডেট পেতে, didUpdateSpeedingPercentage ইভেন্টটি পরিচালনা করার জন্য একটি পদ্ধতি তৈরি করুন।

সুইফট

// দ্রুতগতির ঘটনাগুলি পরিচালনা করতে শ্রোতা। ফাংশন নেভিগেটর( _ নেভিগেটর: GMSNavigator, didUpdateSpeedingPercentage percentageAboveLimit: CGFloat ) { print("গতি সীমার উপরে (শতাংশের উপরে সীমা)।") }

উদ্দেশ্য গ

// দ্রুতগতির ঘটনাগুলি পরিচালনা করতে শ্রোতা। - (অকার্যকর) নেভিগেটর:(GMSNavigator *)নেভিগেটর didUpdateSpeedingPercentage:(CGFloat)percentageAboveLimit { NSLog(@"গতি সীমার উপরে %f শতাংশ।", শতাংশের উপরে সীমা); }

প্রস্তাবিত আলো মোড পরিবর্তন করা হচ্ছে

আলোতে আনুমানিক পরিবর্তনের আপডেট পেতে, didChangeSuggestedLightingMode ইভেন্টটি পরিচালনা করার জন্য একটি পদ্ধতি তৈরি করুন।

সুইফট

// আলো মোডে প্রস্তাবিত পরিবর্তনের জন্য একজন শ্রোতাকে সংজ্ঞায়িত করুন। func navigator(_ navigator: GMSNavigator, didChangeSuggestedLightingMode lightingMode: GMSNavigationLightingMode) { print("প্রস্তাবিত আলো মোড পরিবর্তিত হয়েছে: (স্ট্রিং(বর্ণনা করা: আলোক মোড))")

// প্রস্তাবিত পরিবর্তন করুন। mapView.lightingMode = lightingMode }

উদ্দেশ্য গ

// আলো মোডে প্রস্তাবিত পরিবর্তনের জন্য একজন শ্রোতাকে সংজ্ঞায়িত করুন। -(অকার্যকর)নেভিগেটর:(GMSNavigator *)নেভিগেটর পরিবর্তন করেছে সাজেস্ট করা আলোক মোড: (GMSNavigationLightingMode)lightingMode { NSLog(@"প্রস্তাবিত আলো মোড পরিবর্তিত হয়েছে: %ld", (লং)লাইটিং মোড);

// প্রস্তাবিত পরিবর্তন করুন। _mapView.lightingMode = lightingMode; }