একটি রুট নেভিগেট করুন

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

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

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

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

কোডটি দেখুন

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

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

অবস্থান পরিষেবা অনুমোদন করুন

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

  1. Info.plistNSLocationAlwaysUsageDescription কী যোগ করুন।
  2. মানটির জন্য, আপনার অ্যাপের লোকেশন পরিষেবা কেন প্রয়োজন তার একটি সংক্ষিপ্ত ব্যাখ্যা যোগ করুন। উদাহরণস্বরূপ: "এই অ্যাপটির টার্ন-বাই-টার্ন নেভিগেশনের জন্য লোকেশন পরিষেবা ব্যবহার করার অনুমতি প্রয়োজন।"

  3. অনুমোদনের ডায়ালগটি প্রদর্শন করতে, লোকেশন ম্যানেজার ইনস্ট্যান্সের requestAlwaysAuthorization() কল করুন।

সুইফট

self.locationManager.requestAlwaysAuthorization()

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

[_locationManager requestAlwaysAuthorization];

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

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

সুইফট

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

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

// 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");
     }
   }];

শর্তাবলী মেনে নিন

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

সুইফট

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

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

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 এ সেট করুন।

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

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

সুইফট

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

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

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

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

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

স্থান আইডি সম্পর্কে জানতে অনুগ্রহ করে স্থান আইডি দেখুন।

মাল্টি-স্টপ দৃশ্যকল্প

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

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

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

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

সুইফট

self.mapView.travelMode = .cycling

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

_mapView.travelMode = GMSNavigationTravelModeCycling;

এড়িয়ে চলার জন্য রাস্তা নির্ধারণ করুন

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

সুইফট

self.mapView.navigator?.avoidsTolls = true

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

_mapView.navigator.avoidsTolls = YES;

প্লেসআইডি ফাইন্ডার

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

ভাসমান টেক্সট

আপনি আপনার অ্যাপের যেকোনো জায়গায় ভাসমান টেক্সট যোগ করতে পারেন, যদি না Google অ্যাট্রিবিউশনটি অন্তর্ভুক্ত থাকে। নেভিগেশন SDK ম্যাপের অক্ষাংশ/দ্রাঘিমাংশে অথবা লেবেলে টেক্সট অ্যাঙ্কর করা সমর্থন করে না। আরও তথ্যের জন্য, Info windows দেখুন।