কোনও রুটে নেভিগেট করা

iOS-এর জন্য Navigation SDK ব্যবহার করে, আপনার অ্যাপের মধ্যে একটি গন্তব্যের জন্য রুট প্লট করতে এই নির্দেশিকা অনুসরণ করুন।

এক নজরে

  1. আপনার প্রোজেক্ট সেট-আপ করুন বিভাগে যেভাবে বর্ণনা করা হয়েছে, সেইভাবে আপনার অ্যাপে Navigation SDK ইন্টিগ্রেট করুন।
  2. GMSMapView কনফিগার করুন।
  3. ব্যবহারকারীকে নিয়ম ও শর্তাবলীতে সম্মতি জানাতে এবং লোকেশন পরিষেবা ও ব্যাকগ্রাউন্ড বিজ্ঞপ্তি অনুমোদন করতে প্রম্পট করুন।
  4. এক বা একাধিক গন্তব্য সহ একটি অ্যারে তৈরি করুন।
  5. ধাপে ধাপে নেভিগেশন কন্ট্রোল করতে GMSNavigator সংজ্ঞায়িত করুন।

    • setDestinations ব্যবহার করে গন্তব্য যোগ করুন।
    • নেভিগেশন শুরু করতে isGuidanceActive true-এ সেট করুন।
    • আপনার অ্যাপ পরীক্ষা, ডিবাগ ও ডেমো দেখানোর জন্য, রুট বরাবর গাড়ির প্রগ্রেস সিমুলেট করতে simulateLocationsAlongExistingRoute ব্যবহার করুন।

কোডটি দেখুন

প্রয়োজনীয় অনুমোদনের জন্য ব্যবহারকারীকে প্রম্পট করুন

Navigation SDK ব্যবহার করার আগে, ব্যবহারকারীকে অবশ্যই নিয়ম ও শর্তাবলীতে সম্মতি জানাতে হবে এবং লোকেশন পরিষেবা ব্যবহারের অনুমতি দিতে হবে, যা নেভিগেশনের জন্য প্রয়োজন। আপনার অ্যাপ ব্যাকগ্রাউন্ডে চললে, এটি অবশ্যই ব্যবহারকারীকে গাইডেন্স অ্যালার্ট বিজ্ঞপ্তি অনুমোদন করার জন্য প্রম্পট করবে। এই বিভাগে দেখানো হয়েছে কীভাবে প্রয়োজনীয় অনুমোদনের প্রম্পট দেখাতে হয়।

লোকেশন পরিষেবা অনুমোদন করুন

Navigation SDK লোকেশন পরিষেবা ব্যবহার করে, যার জন্য ব্যবহারকারীর অনুমতি প্রয়োজন। লোকেশন পরিষেবা চালু করতে এবং অনুমোদনের ডায়ালগ দেখাতে, এইসব ধাপ অনুসরণ করুন:

  1. Xcode-এ লোকেশন ও ব্যাকগ্রাউন্ড সংক্রান্ত ক্ষমতা চালু করুন:

    1. Xcode-এ আপনার টার্গেট খুলুন এবং সাইন-ইন ও ক্ষমতা ট্যাব বেছে নিন। বিস্তারিত জানতে, Apple-এর আপনার অ্যাপে ক্ষমতা যোগ করা সংক্রান্ত নির্দেশিকা দেখুন।
    2. লোকেশন (সবসময়) এবং লোকেশন (ব্যবহার করার সময়) ক্ষমতা যোগ করুন। প্রতিটির জন্য টেক্সট ফিল্ডে, আপনার অ্যাপের কেন লোকেশন পরিষেবা প্রয়োজন তার একটি সংক্ষিপ্ত ব্যাখ্যা যোগ করুন (যেমন: "ধাপে ধাপে নেভিগেশনের জন্য এই অ্যাপের লোকেশন পরিষেবা ব্যবহার করার অনুমতি প্রয়োজন।")।
    3. ব্যাকগ্রাউন্ড মোড ক্ষমতা যোগ করুন এবং তারপরে লোকেশন আপডেট চেকবক্স বেছে নিন। এই ক্ষমতা না থাকলে, নেভিগেশন শুরু করার সময় অ্যাপ ক্র্যাশ করে। বিস্তারিত জানতে, Apple-এর ব্যাকগ্রাউন্ডে লোকেশন আপডেট ম্যানেজ করা সংক্রান্ত নির্দেশিকা দেখুন।
  2. অনুমোদন ডায়ালগ দেখাতে, লোকেশন ম্যানেজার ইনস্ট্যান্সের requestAlwaysAuthorization() মেথড কল করুন।

Swift

self.locationManager.requestAlwaysAuthorization()

Objective-C

[_locationManager requestAlwaysAuthorization];

লোকেশন পরিষেবা অনুমোদনের জন্য সম্পূর্ণ Apple ডকুমেন্টেশন দেখুন।

ব্যাকগ্রাউন্ডে নির্দেশিকা পাওয়ার জন্য সতর্কতা বিজ্ঞপ্তি অনুমোদিত করুন

অ্যাপ ব্যাকগ্রাউন্ডে চলার সময় সতর্কতা বিজ্ঞপ্তি প্রদান করার জন্য Navigation SDK-এর ব্যবহারকারীর অনুমতি প্রয়োজন। এইসব বিজ্ঞপ্তি দেখানোর জন্য ব্যবহারকারীর থেকে অনুমতি চাইতে নিম্নলিখিত কোড যোগ করুন:

Swift

UNUserNotificationCenter.current().requestAuthorization(options: [.alert]) {
  granted, error in
    // Handle denied authorization to display notifications.
    if !granted || error != nil {
      print("User rejected request to display notifications.")
    }
}

Objective-C

// Request authorization for alert notifications.
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
UNAuthorizationOptions options = UNAuthorizationOptionAlert;
[center requestAuthorizationWithOptions:options
                      completionHandler:
 ^(
   BOOL granted,
   NSError *_Nullable error) {
     if (!error && granted) {
       NSLog(@"iOS Notification Permission: newly Granted");
     } else {
       NSLog(@"iOS Notification Permission: Failed or Denied");
     }
   }];

মোশন সেন্সর অনুমোদন করুন

ভবিষ্যতে কোনও বড় রিলিজের ক্ষেত্রে, iOS-এর জন্য Navigation SDK, রাউটিং অল্টিটিউড গণনা করার জন্য ডিভাইস মোশন সেন্সরের (CMAltimeter) সাথে মূল লোকেশন ডেটা একত্রিত করে। SDK অল্টিমিটার অ্যাক্সেস করলে, iOS অটোমেটিক এই স্ট্রিং ব্যবহার করে ব্যবহারকারীর কাছে অনুমতি চায়।

এখন এই কী যোগ করলে বর্তমান আচরণে কোনও প্রভাব পড়ে না, তবে পরে SDK আপগ্রেড করার সময় ইনিশিয়ালাইজেশন ক্র্যাশ হওয়া আটকায়।

SDK-এর ভবিষ্যতের আপগ্রেডের জন্য প্রস্তুত হতে, মোশন সেন্সর অনুমোদনগুলি নিম্নরূপ কনফিগার করুন:

  1. Xcode-এ আপনার টার্গেট খুলুন এবং তথ্য ট্যাবে নেভিগেট করুন অথবা আপনার Info.plist ফাইল খুলুন।

  2. নতুন 'কী' যোগ করুন: গোপনীয়তা - মোশন ব্যবহারের বিবরণ (NSMotionUsageDescription).

  3. ব্যবহারকারীর জন্য একটি সংক্ষিপ্ত ব্যাখ্যা যোগ করুন। যেমন: "উচ্চতা গণনা করতে এবং ম্যাপ রাউটিংয়ের নির্ভুলতা উন্নত করতে এই অ্যাপের মোশন সেন্সর অ্যাক্সেস প্রয়োজন।"

নিয়ম ও শর্তাবলীতে সম্মতি জানান

নিয়ম ও শর্তাবলী সংক্রান্ত ডায়ালগ দেখাতে এবং ব্যবহারকারী শর্তাবলীতে সম্মতি জানালে নেভিগেশন চালু করতে নিম্নলিখিত কোড ব্যবহার করুন। মনে রাখবেন যে এই উদাহরণে লোকেশন পরিষেবা এবং গাইডেন্স অ্যালার্ট বিজ্ঞপ্তির (আগে দেখানো হয়েছে) কোড অন্তর্ভুক্ত আছে।

Swift

  let termsAndConditionsOptions = GMSNavigationTermsAndConditionsOptions(companyName: "Ride Sharing Co.")

  GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(
    with: termsAndConditionsOptions) { termsAccepted in
    if termsAccepted {
      // Enable navigation if the user accepts the terms.
      self.mapView.isNavigationEnabled = true
      self.mapView.settings.compassButton = true

      // Request authorization to use location services.
      self.locationManager.requestAlwaysAuthorization()

      // Request authorization for alert notifications which deliver guidance instructions
      // in the background.
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert]) {
      granted, error in
        // Handle rejection of notification authorization.
        if !granted || error != nil {
          print("Authorization to deliver notifications was rejected.")
        }
      }
    } else {
      // Handle rejection of terms and conditions.
    }
  }

Objective-C

GMSNavigationTermsAndConditionsOptions *termsAndConditionsOptions = [[GMSNavigationTermsAndConditionsOptions alloc] initWithCompanyName:@"Ride Sharing Co."];

[GMSNavigationServices
  showTermsAndConditionsDialogIfNeededWithOptions:termsAndConditionsOptions
  callback:^(BOOL termsAccepted) {
   if (termsAccepted) {
     // Enable navigation if the user accepts the terms.
     _mapView.navigationEnabled = YES;
     _mapView.settings.compassButton = YES;

     // Request authorization to use the current device location.
     [_locationManager requestAlwaysAuthorization];

     // Request authorization for alert notifications which deliver guidance instructions
     // in the background.
     UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
     UNAuthorizationOptions options = UNAuthorizationOptionAlert;
     [center requestAuthorizationWithOptions:options
                           completionHandler:
     ^(
       BOOL granted,
       NSError *_Nullable error) {
         if (!error && granted) {
           NSLog(@"iOS Notification Permission: newly Granted");
         } else {
           NSLog(@"iOS Notification Permission: Failed or Denied");
         }
       }];
   } else {
     // Handle rejection of the terms and conditions.
   }
 }];

রুট তৈরি করে নেভিগেশন শুরু করা

রুট প্লট করতে, নেভিগেটরের setDestinations পদ্ধতিকে কল করুন, যেখানে এক বা একাধিক GMSNavigationWaypoint গন্তব্যের অ্যারে থাকবে। রুটটি সফলভাবে গণনা করা হলে, এটি ম্যাপে দেখা যায়। রুট বরাবর নির্দেশিকা শুরু করতে, কলব্যাকে isGuidanceActive-কে true-এ সেট করুন।

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

  • একটি গন্তব্য সহ নতুন রুট তৈরি করা হচ্ছে।
  • নির্দেশনা শুরু হচ্ছে।
  • ব্যাকগ্রাউন্ডে নির্দেশিকা সংক্রান্ত বিজ্ঞপ্তি চালু করা হচ্ছে।
  • রুট বরাবর ভ্রমণের সিমুলেশন (ঐচ্ছিক)।
  • ক্যামেরা মোড "ফলো" হিসেবে সেট করা (ঐচ্ছিক)।

Swift

func startNav() {
  var destinations = [GMSNavigationWaypoint]()
  destinations.append(GMSNavigationWaypoint.init(placeID: "ChIJnUYTpNASkFQR_gSty5kyoUk",
                                                 title: "PCC Natural Market")!)

  mapView.navigator?.setDestinations(destinations) { routeStatus in
    self.mapView.navigator?.isGuidanceActive = true
    self.mapView.locationSimulator?.simulateLocationsAlongExistingRoute()
    self.mapView.cameraMode = .following
  }
}

Objective-C

- (void)startNav {
  NSArray<GMSNavigationWaypoint *> *destinations =
  @[[[GMSNavigationWaypoint alloc] initWithPlaceID:@"ChIJnUYTpNASkFQR_gSty5kyoUk"
                                             title:@"PCC Natural Market"]];

  [_mapView.navigator setDestinations:destinations
                             callback:^(GMSRouteStatus routeStatus){
                               [_mapView.locationSimulator simulateLocationsAlongExistingRoute];
                               _mapView.navigator.guidanceActive = YES;
                               _mapView.cameraMode = GMSNavigationCameraModeFollowing;
                             }];
}

জায়গার আইডি সম্পর্কে জানতে, জায়গার আইডি দেখুন।

একাধিক স্টপ সহ পরিস্থিতি

আপনি সর্বাধিক ২৫টি ওয়েপয়েন্ট কনফিগার করতে পারবেন।

setDestinations পদ্ধতিতে একাধিক স্টপেজ সহ যাত্রা করা যায় না। যাত্রার পরবর্তী লেগের জন্য ওয়েপয়েন্ট সেট করতে continueToNextDestinationWithCompletion() ব্যবহার করুন।

ভ্রমণ মোড সেট করুন

ভ্রমণ মোড, কোন ধরনের রুট ফেচ করতে হবে এবং ব্যবহারকারীর কোর্স কীভাবে নির্ধারণ করতে হবে, দুটিই সংজ্ঞায়িত করে। আপনি কোনও রুটের জন্য চারটি ভ্রমণ মোডের মধ্যে একটি সেট করতে পারেন: গাড়ি চালানো, সাইকেল চালানো, হাঁটা এবং ট্যাক্সি। ড্রাইভিং ও ট্যাক্সি মোডে, ব্যবহারকারীর কোর্স ভ্রমণের দিকের উপর নির্ভর করে; সাইক্লিং ও হাঁটার মোডে কোর্সটি ডিভাইসটি যেদিকে মুখ করে আছে সেই দিক দ্বারা উপস্থাপিত হয় (ল্যান্ডস্কেপ মোডে ডিভাইসের উপরের দিকে)।

ম্যাপ ভিউয়ের travelMode প্রপার্টি সেট করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

Swift

self.mapView.travelMode = .cycling

Objective-C

_mapView.travelMode = GMSNavigationTravelModeCycling;

এড়িয়ে যাওয়ার জন্য রাস্তা সেট করুন

কোনও রুটে হাইওয়ে, টোল রাস্তা বা দুটিই এড়াতে avoidsHighways ও avoidsTolls BOOL প্রপার্টি ব্যবহার করুন।

Swift

self.mapView.navigator?.avoidsTolls = true

Objective-C

_mapView.navigator.avoidsTolls = YES;

অডিও নির্দেশিকার ভলিউম সেট করুন

ভয়েস নির্দেশনার ভলিউম অ্যাডজাস্ট করতে, নেভিগেটরে volumeLevel প্রপার্টি কম, স্বাভাবিক বা বেশি হিসেবে সেট করুন। নেভিগেটর শেষবার ব্যবহার করা ভলিউম লেভেল ব্যবহার করে অথবা ডিফল্ট হিসেবে স্বাভাবিক ভলিউম লেভেল ব্যবহার করে।

Swift

self.mapView.navigator?.volumeLevel = .low

Objective-C

_mapView.navigator.volumeLevel = GMSNavigationVolumeLevelLow;

PlaceID খোঁজার টুল

রুটের গন্তব্যের জন্য ব্যবহার করতে, আপনি PlaceID Finder ব্যবহার করে প্লেস আইডি খুঁজে নিতে পারেন। GMSNavigationWaypoint-এর সাথে placeID থেকে গন্তব্য যোগ করুন।

ফ্লোটিং টেক্সট

Google অ্যাট্রিবিউশন ঢাকা না পড়লে, আপনার অ্যাপের যেকোনও জায়গায় ফ্লোটিং টেক্সট যোগ করতে পারবেন। Navigation SDK-তে ম্যাপের নির্দিষ্ট কোঅর্ডিনেট (অক্ষাংশ, দ্রাঘিমাংশ) বা লেবেলে টেক্সট অ্যাঙ্কর করার সুবিধা নেই। আরও তথ্যের জন্য, তথ্য উইন্ডো দেখুন।