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

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

সংক্ষিপ্ত বিবরণ

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 {

অবজেক্টিভ-সি

@interface ViewController () <GMSNavigatorListener,
GMSRoadSnappedLocationProviderListener>

@end

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

সুইফট

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

অবজেক্টিভ-সি

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

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

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

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

অবস্থান সম্পত্তি বিবরণ
উচ্চতা বর্তমান উচ্চতা।
স্থানাঙ্ক.অক্ষাংশ বর্তমান রাস্তা-স্ন্যাপড অক্ষাংশ স্থানাঙ্ক।
স্থানাঙ্ক.দ্রাঘিমাংশ বর্তমান রাস্তা-স্ন্যাপড দ্রাঘিমাংশ স্থানাঙ্ক।
কোর্স ডিগ্রীতে কারেন্ট বিয়ারিং।
গতি বর্তমান গতি।
টাইমস্ট্যাম্প বর্তমান পঠনের তারিখ/সময়।

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

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

সুইফট

mapView.roadSnappedLocationProvider.startUpdatingLocation()

অবজেক্টিভ-সি

[_mapView.roadSnappedLocationProvider startUpdatingLocation];

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

সুইফট

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

অবজেক্টিভ-সি

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

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

সুইফট

mapView.roadSnappedLocationProvider.allowsBackgroundLocationUpdates = true

অবজেক্টিভ-সি

 _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 }

অবজেক্টিভ-সি

-   (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.") }

অবজেক্টিভ-সি

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

গন্তব্যস্থলে পৌঁছানোর সময় আপডেট পাওয়া

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

সুইফট

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

অবজেক্টিভ-সি

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

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

সুইফট

navigator?.timeUpdateThreshold = 10

অবজেক্টিভ-সি

navigator.timeUpdateThreshold = 10;

গন্তব্যস্থলের দূরত্বের আপডেট পাওয়া

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

সুইফট

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

অবজেক্টিভ-সি

-   (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

অবজেক্টিভ-সি

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)") }

অবজেক্টিভ-সি

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

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

বিলম্ব বিভাগ বিবরণ
GMSNavigationDelayCategoryNoData ০ - অনুপলব্ধ, ট্র্যাফিকের জন্য কোনও ডেটা নেই অথবা :
রুট।
GMSNavigationবিলম্ববিভাগভারী ১ - ভারী।
GMSNavigationবিলম্ববিভাগমাধ্যম 2 - মাঝারি।
GMSNavigationবিলম্ববিভাগআলো ৩ - আলো।

গতির আপডেট পাওয়া

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

সুইফট

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

অবজেক্টিভ-সি

// 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 }

অবজেক্টিভ-সি

// 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; }