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

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

ওভারভিউ

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

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

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

কোড দেখুন

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

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

সুইফট

class ViewController: UIViewController, GMSNavigatorListener,
GMSRoadSnappedLocationProviderListener {

উদ্দেশ্য-C

@interface ViewController () <GMSNavigatorListener,
GMSRoadSnappedLocationProviderListener>

@end

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

সুইফট

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

উদ্দেশ্য-C

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

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

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

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

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

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

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

সুইফট

mapView.roadSnappedLocationProvider.startUpdatingLocation()

উদ্দেশ্য-C

[_mapView.roadSnappedLocationProvider startUpdatingLocation];

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

সুইফট

func locationProvider(_ locationProvider: GMSRoadSnappedLocationProvider,
didUpdate location: CLLocation) { print("Location: \(location.description)") }

উদ্দেশ্য-C

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

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

সুইফট

mapView.roadSnappedLocationProvider.allowsBackgroundLocationUpdates = true

উদ্দেশ্য-C

 _mapView.roadSnappedLocationProvider.allowsBackgroundLocationUpdates = YES;

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

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

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

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

সুইফট

func navigator(_ navigator: GMSNavigator, didArriveAt waypoint:
GMSNavigationWaypoint) { print("You have arrived at: \(waypoint.title)")
mapView.navigator?.continueToNextDestination()
mapView.navigator?.isGuidanceActive = true }

উদ্দেশ্য-C

-   (void)navigator:(GMSNavigator *)navigator
    didArriveAtWaypoint:(GMSNavigationWaypoint *)waypoint { NSLog(@"You have
    arrived at: %@", waypoint.title); [_mapView.navigator
    continueToNextDestination]; _mapView.navigator.guidanceActive = YES; }

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

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

সুইফট

func navigatorDidChangeRoute(_ navigator: GMSNavigator) { print("The route has
changed.") }

উদ্দেশ্য-C

-   (void)navigatorDidChangeRoute:(GMSNavigator *)navigator { NSLog(@"The route
    has changed."); }

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

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

সুইফট

func navigator(_ navigator: GMSNavigator, didUpdateRemainingTime time:
TimeInterval) { print("Time to next destination: \(time)") }

উদ্দেশ্য-C

-   (void)navigator:(GMSNavigator *)navigator
    didUpdateRemainingTime:(NSTimeInterval)time { NSLog(@"Time to next
    destination: %f", time); }

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

সুইফট

navigator?.timeUpdateThreshold = 10

উদ্দেশ্য-C

navigator.timeUpdateThreshold = 10;

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

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

সুইফট

func navigator(_ navigator: GMSNavigator, didUpdateRemainingDistance distance:
CLLocationDistance) { let miles = distance * 0.00062137 print("Distance to next
destination: \(miles) miles.") }

উদ্দেশ্য-C

-   (void)navigator:(GMSNavigator *)navigator
    didUpdateRemainingDistance:(CLLocationDistance)distance { double miles =
    distance * 0.00062137; NSLog(@"%@", [NSString stringWithFormat:@"Distance to
    next destination: %.2f.", miles]); }

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

সুইফট

navigator?.distanceUpdateThreshold = 100

উদ্দেশ্য-C

navigator.distanceUpdateThreshold = 100;

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

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

সুইফট

func navigator(_ navigator: GMSNavigator, didUpdate delayCategory:
GMSNavigationDelayCategory) { print("Traffic flow to next destination:
\(delayCategory)") }

উদ্দেশ্য-C

-   (void)navigator:(GMSNavigator *)navigator
    didUpdateDelayCategory:(GMSNavigationDelayCategory)delayCategory {
    NSLog(@"Traffic flow to next destination: %ld", (long)delayCategory); }

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

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

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

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

সুইফট

// Listener to handle speeding events. func navigator( _ navigator:
GMSNavigator, didUpdateSpeedingPercentage percentageAboveLimit: CGFloat ) {
print("Speed is \(percentageAboveLimit) above the limit.") }

উদ্দেশ্য-C

// Listener to handle speeding events. - (void)navigator:(GMSNavigator
*)navigator didUpdateSpeedingPercentage:(CGFloat)percentageAboveLimit {
NSLog(@"Speed is %f percent above the limit.", percentageAboveLimit); }

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

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

সুইফট

// Define a listener for suggested changes to lighting mode. func navigator(_
navigator: GMSNavigator, didChangeSuggestedLightingMode lightingMode:
GMSNavigationLightingMode) { print("Suggested lighting mode has changed:
\(String(describing: lightingMode))")

 // Make the suggested change. mapView.lightingMode = lightingMode }

উদ্দেশ্য-C

// Define a listener for suggested changes to lighting mode.
-(void)navigator:(GMSNavigator *)navigator didChangeSuggestedLightingMode:
(GMSNavigationLightingMode)lightingMode { NSLog(@"Suggested lighting mode has
changed: %ld", (long)lightingMode);

 // Make the suggested change. _mapView.lightingMode = lightingMode; }