কাস্টমাইজড নির্দেশিকা তৈরি করুন

এই পৃষ্ঠায় একটি কাস্টম নেভিগেশন অভিজ্ঞতার অংশ হিসেবে কাস্টমাইজড গাইডেন্স তৈরি করার জন্য অনুসরণীয় প্রধান ধাপগুলো বর্ণনা করা হয়েছে।

এই প্রক্রিয়াটি "একটি পথ খুঁজে বের করুন" অংশে বর্ণিত প্রক্রিয়া থেকে নিম্নরূপভাবে ভিন্ন:

  • আপনি প্রথমে স্বাধীনভাবে একটি নেভিগেশন সেশন স্থাপন করেন এবং ভিউ কন্ট্রোলারকে কল না করে, সেই সেশনের মাধ্যমে একটি নেভিগেটর ইনস্ট্যান্স সংগ্রহ করেন।
  • আপনি নেভিগেশন ইভেন্টগুলিতে সাড়া দিতে এবং সেগুলি পরিচালনা করতে একটি ইভেন্ট লিসেনার সেট আপ করেন।
  1. GMSNavigationService.createNavigationSession ব্যবহার করে একটি নেভিগেশন সেশন তৈরি করুন এবং একটি setDestination কলের মাধ্যমে নেভিগেশন শুরু করুন। যেখানে গুগল নেভিগেশন এক্সপেরিয়েন্স নেভিগেশন ম্যাপ ভিউয়ের মাধ্যমে নেভিগেটরকে চালু করে, সেখানে GMSNavigationServices একটি UI ইনস্ট্যান্স থেকে স্বাধীনভাবে একটি নেভিগেশন সেশন থেকে ইভেন্টের ধারা নিয়ন্ত্রণ ও গ্রহণ করে। এর মানে হলো, এটি UI ছাড়াই চলতে পারে, অথবা যেকোনো UI-ভিত্তিক এক্সপেরিয়েন্সে পাস করা যেতে পারে। এই পদ্ধতিতে, নেভিগেশন সেশনটি আপনার অ্যাপে ততক্ষণ চলতে থাকে যতক্ষণ না এর থেকে শেষ রেফারেন্সটি সরিয়ে ফেলা হয়।

  2. একটি রোড-স্ন্যাপড লোকেশন প্রোভাইডার স্থাপন করুন । আপনার অ্যাপে যদি অবিচ্ছিন্ন অবস্থান পর্যবেক্ষণের ব্যবস্থা রাখতে চান, যেমন রুটের পাশে একটি নীল বিন্দুসহ নেভিগেশন ভিউ দেখানোর সময়, তাহলে এই লোকেশন প্রোভাইডারটি ব্যবহার করুন।

  3. GMSNavigatorListener প্রোটোকল প্রয়োগ করে বিস্তারিত টার্ন-বাই-টার্ন নির্দেশনার জন্য একটি লিসেনার সেট আপ করুন । তারপর, আপনার কাস্টম নেভিগেশন অভিজ্ঞতার জন্য যা যা প্রয়োজন, সেই তথ্যকে সেগুলিতে রূপান্তর করুন। উদাহরণস্বরূপ:

    1. দিকনির্দেশনার সহজ স্ক্রিন কাস্টিং-এর জন্য শুধুমাত্র টেক্সট ফিল্ড প্রয়োগ করুন।
    2. আপনার নিজের UI-এর জন্য ফিল্ডগুলি ডিজাইন করুন এবং পূরণ করুন।
  4. একটি নেভিগেশন সিমুলেটর সেট আপ করুন । এটি উন্নয়ন এবং পরীক্ষার জন্য প্রয়োজনীয়।

একটি স্বাধীন নেভিগেশন সেশন তৈরি করুন

ডেমো থেকে নেওয়া নিম্নলিখিত কোড স্নিপেটটি ভিউ কন্ট্রোলার থেকে স্বাধীনভাবে প্রতিষ্ঠিত নেভিগেশন দেখায়। এরপর কোডটি একটি ওভারভিউ ম্যাপ যোগ করে, যা বর্তমান রোড-স্ন্যাপ করা অবস্থানটি দেখানোর জন্য কনফিগার করা হয়েছে।

// Create the navigation session.

 _navigationSession = [GMSNavigationServices createNavigationSession];
 GMSRoadSnappedLocationProvider *roadSnappedLocationProvider =
     _navigationSession.roadSnappedLocationProvider;
 [roadSnappedLocationProvider startUpdatingLocation];
 GMSNavigator *navigator = _navigationSession.navigator;
 [navigator addListener:self];
 navigator.voiceGuidance = GMSNavigationVoiceGuidanceSilent;
 navigator.sendsBackgroundNotifications = NO;
 _navigationSession.started = YES;
​​ [navigator setDestinations:@[ destination ]
                   callback:^(GMSRouteStatus routeStatus) {
                      // …handle changes in route status.
                    }];

 // Add an overview map.
 _mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
 [self.mainStackView addArrangedSubview:_mapView];
 [self.mainStackView setNeedsLayout];
 _mapView.settings.compassButton = YES;
 _mapView.delegate = self;
 _mapView.myLocationEnabled = YES;
 _mapView.roadSnappedMyLocationSource = roadSnappedLocationProvider;

কাস্টম এক্সপেরিয়েন্স থেকে গুগল এক্সপেরিয়েন্সে নেভিগেশন স্থানান্তর করা

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

`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];

[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];