নেভিগেশন UI পরিবর্তন করুন

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

ম্যাপ UI কন্ট্রোল

Navigation SDK-তে কিছু বিল্ট-ইন UI কন্ট্রোল আছে যা iOS অ্যাপ্লিকেশনের জন্য Google Maps-এ পাওয়া যায়। আপনি GMSUISettings ক্লাস ব্যবহার করে এইসব কন্ট্রোলের দৃশ্যমানতা টগল করতে পারবেন। এই ক্লাসে আপনি কোনও পরিবর্তন করলে তা ম্যাপে সঙ্গে সঙ্গে দেখা যাবে।

কম্পাস

Navigation SDK একটি কম্পাস গ্রাফিক প্রদান করে যা নির্দিষ্ট পরিস্থিতিতে এবং শুধুমাত্র চালু থাকলে ম্যাপের উপরের ডানদিকের কোণায় দেখা যায়। ব্যবহারকারী কম্পাসে ট্যাপ করলে, ক্যামেরা অ্যানিমেট করে এমন একটি পজিশনে ফিরে যায় যেখানে বিয়ারিং শূন্য (ডিফল্ট ওরিয়েন্টেশন) এবং কম্পাসটি কিছুক্ষণ পরে অদৃশ্য হয়ে যায়।

নেভিগেশন চালু থাকলে এবং ক্যামেরা মোড "ফলো করা" হিসেবে সেট করা থাকলে, কম্পাস দেখা যায় এবং কম্পাসে ট্যাপ করলে টিল্ট করা ও ওভারভিউ ক্যামেরা পার্সপেক্টিভের মধ্যে টগল করা যায়।

ড্রাইভারের মনোযোগ যাতে বিঘ্নিত না হয়, সেই জন্য কম্পাস একই পজিশনে থাকে, যদি হেডার (পোর্ট্রেট মোডে) বড় হয়ে যায় এবং কম্পাসের ডিফল্ট পজিশনের সাথে কনফ্লিক্ট করে। আপনি সেকেন্ডারি হেডার কাস্টম কন্ট্রোল বা হেডার অ্যাক্সেসরি ভিউ যোগ করলে, UI সংক্রান্ত সমস্যা এড়াতে কম্পাস লুকানো থাকে।

কম্পাসে দিন ও রাত মোডের পাশাপাশি ডার্ক মোডও কাজ করে।

11.0.0 এবং তার পরবর্তী ভার্সনে কম্পাস ডিফল্ট হিসেবে চালু করা থাকে। আপনি GMSUISettings-এর compassButton প্রপার্টি false-এ সেট করে কম্পাস বন্ধ করতে পারবেন।

Swift

mapView.settings.compassButton = false

Objective-C

mapView.settings.compassButton = NO;

'আমার লোকেশন' বোতাম

'আমার লোকেশন' বোতাম চালু থাকলে, স্ক্রিনের নিচে ডানদিকের কোণে 'আমার লোকেশন' বোতামটি শুধুমাত্র দেখা যায়। ব্যবহারকারী বোতামে ক্লিক করলে, ব্যবহারকারীর লোকেশন জানা থাকলে, ক্যামেরা অ্যানিমেট করে ব্যবহারকারীর বর্তমান লোকেশনে ফোকাস করে। আপনি GMSUISettings-এর myLocationButton প্রপার্টি true-এ সেট করে বোতামটি চালু করতে পারবেন।

Swift

mapView.settings.myLocationButton = true

Objective-C

mapView.settings.myLocationButton = YES;

রিসেন্টার বোতাম

নেভিগেশন চালু থাকলে, ব্যবহারকারী ম্যাপ ভিউ স্ক্রল করলে রিসেন্টার বোতামটি দেখা যায় এবং ব্যবহারকারী ম্যাপ রিসেন্টার করার জন্য ট্যাপ করলে অদৃশ্য হয়ে যায়। রিসেন্টার বোতাম দেখানোর অনুমতি দিতে, GMSUISettings-এর recenterButtonEnabled প্রপার্টি true-এ সেট করুন। রিসেন্টার বোতাম যাতে দেখা না যায়, তার জন্য recenterButtonEnabled-কে false-এ সেট করুন।

Swift

mapView.settings.isRecenterButtonEnabled = true

Objective-C

mapView.settings.recenterButtonEnabled = YES;

ম্যাপ UI অ্যাক্সেসরি

Navigation SDK এমন UI অ্যাক্সেসরি প্রদান করে যা নেভিগেশনের সময় দেখা যায়। এগুলি iOS অ্যাপ্লিকেশনের জন্য Google Maps-এ পাওয়া অ্যাক্সেসরির মতোই। এই বিভাগে যেমন বর্ণনা করা হয়েছে, সেই অনুযায়ী আপনি এইসব কন্ট্রোলের দৃশ্যমানতা বা ভিজ্যুয়াল অ্যাপিয়ারেন্স অ্যাডজাস্ট করতে পারবেন। আপনি এখানে যে পরিবর্তন করবেন তা ব্যবহারকারীর পরবর্তী ট্রিপের সময় দেখা যাবে।

নেভিগেশন চলাকালীন, স্ক্রিনের সবচেয়ে উপরে নেভিগেশন হেডার এবং সবচেয়ে নিচে নেভিগেশন ফুটার দেখা যায়। নেভিগেশন হেডারে রাস্তার নাম এবং রুটের পরবর্তী বাঁকের দিকনির্দেশ, সেইসাথে পরবর্তী বাঁকের দিকনির্দেশ দেখানো হয়। নেভিগেশন ফুটারে গন্তব্যে পৌঁছানোর আনুমানিক সময় ও দূরত্ব এবং পৌঁছানোর আনুমানিক সময় দেখানো হয়।

আপনি নেভিগেশন হেডার ও ফুটারের দৃশ্যমানতা টগল করতে এবং নিম্নলিখিত প্রপার্টি ব্যবহার করে প্রোগ্রাম্যাটিক্যালি এর রঙ সেট করতে পারবেন:

  • navigationHeaderEnabled — নেভিগেশন হেডার দেখা যাবে কিনা তা কন্ট্রোল করে (ডিফল্ট হল true)।
  • navigationFooterEnabled — নেভিগেশন ফুটার দেখা যাবে কিনা তা নিয়ন্ত্রণ করে (ডিফল্ট হল true)।
  • navigationHeaderPrimaryBackgroundColor — নেভিগেশন হেডারের জন্য প্রাইমারি ব্যাকগ্রাউন্ড রঙ সেট করে।
  • navigationHeaderSecondaryBackgroundColor — নেভিগেশন হেডারের জন্য সেকেন্ডারি ব্যাকগ্রাউন্ডের রঙ সেট করে।

নিচের কোডের উদাহরণে দেখানো হয়েছে যে কীভাবে হেডার ও ফুটারের দৃশ্যমানতা চালু করতে হয় এবং তারপর navigationHeaderPrimaryBackgroundColor-কে নীল ও navigationHeaderSecondaryBackgroundColor-কে লাল রঙে সেট করতে হয়।

Swift

mapView.settings.isNavigationHeaderEnabled = true
mapView.settings.isNavigationFooterEnabled = true
mapView.settings.navigationHeaderPrimaryBackgroundColor = .blue
mapView.settings.navigationHeaderSecondaryBackgroundColor = .red

Objective-C

mapView.settings.navigationHeaderEnabled = YES;
mapView.settings.navigationFooterEnabled = YES;
mapView.settings.navigationHeaderPrimaryBackgroundColor = [UIColor blueColor];
mapView.settings.navigationHeaderSecondaryBackgroundColor = [UIColor redColor];

সেকেন্ডারি নেভিগেশন হেডার ভিউ আপনার কাস্টমাইজ করা অ্যাক্সেসরি ভিউ দিয়ে পরিবর্তন করে আপনার অ্যাপ কাস্টমাইজ করতে পারবেন। আপনি এমন একটি ভিউ তৈরি করে এটি করেন যা GMSNavigationAccessoryView প্রোটোকল প্রয়োগ করে। এই প্রোটোকলের একটি প্রয়োজনীয় পদ্ধতি আছে: -heightForAccessoryViewConstrainedToSize:onMapView:। আপনাকে প্রদত্ত mapView-তে আপনার ভিউয়ের জন্য সর্বাধিক উপলভ্য সাইজ দেওয়া হয়েছে এবং আপনাকে অবশ্যই আপনার ভিউয়ের জন্য প্রয়োজনীয় উচ্চতা প্রদান করতে হবে।

তারপর আপনি setHeaderAccessoryView: কল করে এই ভিউ mapView-তে পাস করতে পারবেন mapView যেকোনও বর্তমান ভিউ অ্যানিমেট-আউট করে এবং তারপর আপনার কাস্টম ভিউ অ্যানিমেট-ইন করে। নেভিগেশন হেডার অবশ্যই দৃশ্যমান হতে হবে যাতে আপনার কাস্টম ভিউ দেখানো যায়।

কাস্টম হেডার অ্যাক্সেসরি ভিউ সরাতে, nil-কে setHeaderAccessoryView:-এ পাস করুন।

আপনার ভিউয়ের সাইজ যেকোনও সময় পরিবর্তন করতে হলে, আপনি invalidateLayoutForAccessoryView: কল করতে পারেন, যে ভিউয়ের সাইজ পরিবর্তন করতে হবে সেটি পাস করে।

উদাহরণ

নিম্নলিখিত কোডের উদাহরণে কাস্টম ভিউ দেখানো হয়েছে যা GMSNavigationAccessoryView প্রোটোকল প্রয়োগ করে। এই কাস্টম ভিউ তারপর কাস্টম নেভিগেশন হেডার অ্যাক্সেসরি ভিউ সেট করতে ব্যবহার করা হয়।

Swift

class MyCustomView: UIView, GMSNavigationAccessoryView {
…
  func heightForAccessoryViewConstrained(to size: CGSize, on mapView: GMSMapView) -> CGFloat {
    // viewHeight gets calculated as the height your view needs.
    return viewHeight
  }
…
}

let customView = MyCustomView(...)
mapView.setHeaderAccessory(customView)

// At some later point customView changes size.
mapView.invalidateLayout(forAccessoryView: customView)

// Remove the custom header accessory view.
mapView.setHeaderAccessory(nil)

Objective-C

@interface MyCustomView : UIView <GMSNavigationAccessoryView>
…
@end

@implementation MyCustomView
…
- (CGFloat)heightForAccessoryViewConstrainedToSize:(CGSize)size onMapView:(GMSMapView *)mapView {
  // viewHeight gets calculated as the height your view needs.
  return viewHeight;
}
…
@end

MyCustomView *customView = [[MyCustomView alloc] init…];
[_mapView setHeaderAccessoryView:customView];

// At some later point customView changes size.
[_mapView invalidateLayoutForAccessoryView:customView];

// Remove the custom header accessory view.
[_mapView setHeaderAccessoryView:nil];

কম আলোর মোডের হেডার কালার

iOS-এর জন্য Navigation SDK দিনের সময় এবং ডিভাইসের বর্তমান লোকেশনের উপর ভিত্তি করে সাজেস্ট করা লাইটিং মোড হিসেব করে এবং সাজেস্ট করা মোড পরিবর্তন হলে (যেমন সূর্যোদয় বা সূর্যাস্তের সময়) GMSNavigatorListener.didChangeSuggestedLightingMode লিসনার মেথড কল করে। আপনি নিম্নলিখিত উপায়ে প্রোগ্রাম্যাটিক্যালি কম আলোর মোডের আচরণ পরিবর্তন করতে পারবেন:

দিকনির্দেশের তালিকা

আপনি নিজের অ্যাপে ধাপে-ধাপে দিকনির্দেশ প্রদান করতে পারেন। নিম্নলিখিত উদাহরণে এটি করার একটি সম্ভাব্য উপায় দেখানো হয়েছে। আপনার নিজের ইমপ্লিমেন্টেশনের উপর নির্ভর করে এইসব ধাপ আলাদা হতে পারে।

  1. GMSNavigator (নেভিগেটর)-এ setDestinations-এর পরে এন্ট্রি পয়েন্ট বোতাম চালু করুন সফলভাবে সম্পূর্ণ হয়েছে এবং নেভিগেটরে guidanceActive চালু করা হয়েছে।
  2. ব্যবহারকারী এন্ট্রি পয়েন্ট বোতামে ট্যাপ করলে, GMSMapView (mapView)-এর সাথে সম্পর্কিত নেভিগেটর সহ একটি GMSNavigationDirectionsListController (কন্ট্রোলার) তৈরি করুন।
  3. UIViewController (ভিউ কন্ট্রোলার)-এর ইনস্ট্যান্সে কন্ট্রোলার যোগ করুন, এবং ভিউ কন্ট্রোলারের সাবভিউ হিসেবে directionsListView যোগ করুন। কন্ট্রোলারে reloadData এবং invalidateLayout পদ্ধতিগুলি UICollectionView-এর মতো কল করা উচিত।
  4. অ্যাপের ভিউ কন্ট্রোলার হায়ারার্কিতে ভিউ কন্ট্রোলার পুশ করুন।

নিচের কোডের উদাহরণে DirectionsListViewController যোগ করার বিষয়টি দেখানো হয়েছে।

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  // Add the directionsListView to the host view controller's view.
  let directionsListView = directionsListController.directionsListView
  directionsListView.frame = self.view.frame
  self.view.addSubview(directionsListView)
  directionsListView.translatesAutoresizingMaskIntoConstraints = false
  directionsListView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
  directionsListView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
  directionsListView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
  directionsListView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
  ...
}

override func viewWillAppear(_ animated: Bool) {
  super.viewWillAppear(animated)
  // Make sure data is fresh when the view appears.
  directionsListController.reloadData()
  ...
}

override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
  super.willTransition(to: newCollection, with: coordinator)
  // Invalidate the layout during rotation.
  coordinator.animate(alongsideTransition: {_ in
    self.directionsListController.invalidateLayout()
  })
  ...
}

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];
  // Add the directionsListView to the host view controller's view.
  UIView *directionsListView = _directionsListController.directionsListView;
  directionsListView.frame = self.view.bounds;
  [self.view addSubview:directionsListView];
  directionsListView.translatesAutoresizingMaskIntoConstraints = NO;
  [directionsListView.topAnchor constraintEqualToAnchor:self.view.topAnchor].active = YES;
  [directionsListView.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor].active = YES;
  [directionsListView.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor].active = YES;
  [directionsListView.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor].active = YES;
  ...
}

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  // Make sure data is fresh when the view appears.
  [_directionsListController reloadData];
  ...
}

- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection
              withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
  [super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
  void(^animationBlock)(id <UIViewControllerTransitionCoordinatorContext>context) =
      ^void(id <UIViewControllerTransitionCoordinatorContext>context) {
    [_directionsListController invalidateLayout];
  };
  // Invalidate the layout during rotation.
  [coordinator animateAlongsideTransition:animationBlock
                               completion:nil];
  ...
}

...

ট্রিপ প্রগ্রেস বার

নেভিগেশনে ট্রিপ প্রোগ্রেস বার যোগ করা হয়েছে।

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

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

ট্রিপের প্রোগ্রেস বারে নিম্নলিখিত স্ট্যাটাস ইন্ডিকেটর দেখানো হয়:

  • ট্রাফিক স্ট্যাটাস—সামনে ট্রাফিকের স্ট্যাটাস।

  • বর্তমান লোকেশন—ট্রিপে ড্রাইভারের বর্তমান লোকেশন।

  • অতিক্রান্ত রুট—ট্রিপের অতিক্রান্ত অংশ।

GMSUISettings-এ navigationTripProgressBarEnabled প্রপার্টি সেট করে ট্রিপ প্রোগ্রেস বার চালু করুন।

Swift

mapView.settings.isNavigationTripProgressBarEnabled = true

Objective-C

mapView.settings.navigationTripProgressBarEnabled = YES;

ট্রিপ প্রোগ্রেস বারের পজিশন

  • বারের বাঁদিকটি স্পিডোমিটার, Google লোগো এবং রি-সেন্টার বোতামের (যখন দেখা যায়) বাঁদিকের সাথে মোটামুটিভাবে অ্যালাইন করা থাকে। প্রস্থ ১২ পয়েন্ট।
  • ট্রিপের প্রোগ্রেস বার স্ক্রিনের ভার্টিক্যাল স্পেস অনুযায়ী ডায়নামিকভাবে প্রতিক্রিয়া জানায়। বারের নিচের অংশটি স্ক্রিনের নিচের অংশ থেকে ২১০ pt দূরে অবস্থিত। ট্রিপ প্রোগ্রেস বারের উপরের অংশ স্ক্রিনের উপরের অংশ থেকে কমপক্ষে ১৭০ pt দূরত্বে থাকে এবং বারের সর্বাধিক উচ্চতা ৪০০ pt।
  • ট্রিপ প্রোগ্রেস বার নেভিগেশন হেডার বা অন্যান্য নেভিগেশন UI এলিমেন্টের সাথে ওভারল্যাপ করলে, এটি সেইসব অন্যান্য এলিমেন্টের নিচে দেখা যায়।

Prompt Visibility API (Experimental)

Prompt Visibility API আপনাকে Navigation SDK দ্বারা জেনারেট করা UI এলিমেন্ট এবং আপনার নিজস্ব কাস্টম UI এলিমেন্টের মধ্যে দ্বন্দ্ব এড়াতে দেয়। এটি করার জন্য, Navigation SDK UI এলিমেন্ট প্রদর্শিত হওয়ার ঠিক আগে এবং এলিমেন্টটি সরানোর সাথে সাথেই একটি কলব্যাক পাওয়ার জন্য একটি লিসেনার যোগ করা হয়। কোড স্যাম্পেল সহ আরও তথ্যের জন্য, রিয়েল-টাইম-বিঘ্ন কনফিগার করুন পৃষ্ঠার প্রম্পট ভিজিবিলিটি API বিভাগ দেখুন।

স্পিডোমিটার কন্ট্রোল

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

ড্রাইভার নির্দিষ্ট পরিমাণে স্পিড লিমিট অতিক্রম করলে, স্পিডোমিটার ডিসপ্লের ফর্ম্যাটিং পরিবর্তন করতে আপনি সতর্কতার লেভেল সেট করতে পারবেন। যেমন, আপনি নির্দিষ্ট করতে পারেন যে ড্রাইভার স্পিড লিমিট ৫ মাইল প্রতি ঘণ্টা অতিক্রম করলে বর্তমান স্পিড লাল টেক্সট কালারে এবং ড্রাইভার স্পিড লিমিট ১০ মাইল প্রতি ঘণ্টা অতিক্রম করলে লাল ব্যাকগ্রাউন্ড কালারে দেখাবে।

স্পিড লিমিট কন্ট্রোল দেখাতে, GMSUISettings-এর shouldDisplaySpeedometer প্রপার্টি true-এ সেট করুন। স্পিড লিমিট কন্ট্রোল ডিসপ্লে বন্ধ করতে, shouldDisplaySpeedometer-কে false-এ সেট করুন।

Swift

mapView.settings.shouldDisplaySpeedometer = true

Objective-C

mapView.settings.shouldDisplaySpeedometer = YES;

স্পিডোমিটারের জন্য সতর্কতা সেট করা সম্পর্কে আরও তথ্যের জন্য, স্পিডোমিটার সতর্কতা কনফিগার করুন দেখুন।

গন্তব্য মার্কার

GMSUISettings-এর showsDestinationMarkers প্রপার্টি সেট করে আপনি কোনও নির্দিষ্ট রুটের জন্য গন্তব্য মার্কার দেখাতে বা লুকাতে পারবেন। নিচের উদাহরণে দেখানো হয়েছে কীভাবে গন্তব্য মার্কার বন্ধ করতে হয়।

Swift

mapView.settings.showsDestinationMarkers = false

Objective-C

mapView.settings.showsDestinationMarkers = NO;

ম্যাপের অভিজ্ঞতা সংক্রান্ত ফিচার

Navigation SDK আপনার ব্যবহারকারীদের জন্য নেভিগেশন অভিজ্ঞতা আরও কাস্টমাইজ করতে দেয়। আপনার ইনস্ট্যান্সে করা পরিবর্তনগুলি ব্যবহারকারীর অ্যাপের পরবর্তী আপডেটের সময় প্রতিফলিত হয়।

গন্তব্য হাইলাইট করা ও প্রবেশপথ

গন্তব্য হাইলাইট করা ও প্রবেশপথ

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

placeID সহ গন্তব্য তৈরি করতে, GMSNavigationWaypoint ইনিশিয়ালাইজারগুলির মধ্যে একটি ব্যবহার করুন যা placeID গ্রহণ করে। যেমন, রুট টিউটোরিয়াল নেভিগেট করুন-এ তৈরি করা গন্তব্যে, গন্তব্য হাইলাইট করা এবং উপলভ্য থাকলে প্রবেশপথের লেবেল অন্তর্ভুক্ত থাকে।

নেভিগেশনের সময় 3D বিল্ডিং ডিসপ্লে

নেভিগেশনের সময় 3D বিল্ডিং ডিসপ্লে

নেভিগেশনের সময় ডিফল্ট হিসেবে 3D বিল্ডিং দেখানো হয়। এই ফিচার বন্ধ করতে, buildingsEnabled-কে false (Swift) বা NO (Objective-C)-তে সেট করুন।

ডিফল্ট ম্যাপ জেসচার বন্ধ করুন

আপনি GMSUISettings ক্লাসের প্রপার্টি সেট করে ম্যাপে ডিফল্ট জেসচার বন্ধ করতে পারবেন, যা GMSMapView-এর প্রপার্টি হিসেবে উপলভ্য। নিম্নলিখিত জেসচারগুলি প্রোগ্রাম্যাটিক্যালি চালু এবং বন্ধ করা যেতে পারে। মনে রাখবেন যে জেসচার বন্ধ করে দিলে ক্যামেরা সেটিংসের প্রোগ্রাম্যাটিক অ্যাক্সেস সীমিত হবে না।

  • scrollGestures — স্ক্রল জেসচার চালু নাকি বন্ধ আছে তা নিয়ন্ত্রণ করে। চালু করা থাকলে, ব্যবহারকারীরা ক্যামেরা প্যান করার জন্য সোয়াইপ করতে পারেন।
  • zoomGestures — জুম জেসচার চালু নাকি বন্ধ আছে তা নিয়ন্ত্রণ করে। চালু করা থাকলে, ব্যবহারকারীরা ক্যামেরা জুম করতে ডবল ট্যাপ, দুই আঙুল দিয়ে ট্যাপ বা পিঞ্চ করতে পারেন। মনে রাখবেন যে scrollGestures চালু থাকলে ডবল ট্যাপ বা পিঞ্চ করলে ক্যামেরা নির্দিষ্ট পয়েন্টে প্যান করতে পারে।
  • tiltGestures — টিল্ট জেসচার চালু নাকি বন্ধ আছে তা নিয়ন্ত্রণ করে। চালু করা থাকলে, ব্যবহারকারীরা ক্যামেরা টিল্ট করতে দুটি আঙুল দিয়ে উল্লম্বভাবে নিচের বা উপরের দিকে সোয়াইপ করতে পারেন।
  • rotateGestures — রোটেট জেসচার চালু নাকি বন্ধ আছে তা কন্ট্রোল করে। চালু করা থাকলে, ব্যবহারকারীরা ক্যামেরা ঘোরাতে দুটি আঙুল দিয়ে ঘোরানোর জেসচার ব্যবহার করতে পারবেন।

এই উদাহরণে, প্যান ও জুম জেসচার, দুটিই বন্ধ করা হয়েছে।

Swift

mapView.settings.scrollGestures = false
mapView.settings.zoomGestures = false

Objective-C

mapView.settings.scrollGestures = NO;
mapView.settings.zoomGestures = NO;

পজিশন কন্ট্রোল ও UI এলিমেন্ট

আপনি নিম্নলিখিত প্রপার্টি ব্যবহার করে নেভিগেশন হেডার ও ফুটারের পজিশনের সাপেক্ষে কন্ট্রোল ও অন্যান্য UI এলিমেন্ট পজিশন করতে পারবেন:

  • navigationHeaderLayoutGuide
  • navigationFooterLayoutGuide
  • bottomTrailingButtonsLayoutGuide

নিম্নলিখিত কোডের উদাহরণে দেখানো হয়েছে যে ম্যাপ ভিউতে এক জোড়া লেবেল পজিশন করার জন্য লেআউট গাইড ব্যবহার করা হচ্ছে:

Swift

/* Add a label to the top left, positioned below the header. */
let topLabel = UILabel()
topLabel.text = "Top Left"
mapView.addSubview(topLabel)
topLabel.translatesAutoresizingMaskIntoConstraints = false
topLabel.topAnchor.constraint(equalTo: mapView.navigationHeaderLayoutGuide.bottomAnchor).isActive = true
topLabel.leadingAnchor.constraint(equalTo: mapView.leadingAnchor).isActive = true

/* Add a label to the bottom right, positioned above the footer. */
let bottomLabel = UILabel()
bottomLabel.text = "Bottom Right"
mapView.addSubview(bottomLabel)
bottomLabel.translatesAutoresizingMaskIntoConstraints = false
bottomLabel.bottomAnchor.constraint(equalTo: mapView.navigationFooterLayoutGuide.topAnchor).isActive = true
bottomLabel.trailingAnchor.constraint(equalTo: mapView.trailingAnchor).isActive = true

Objective-C

/* Add a label to the top left, positioned below the header. */
UILabel *topLabel = [[UILabel alloc] init];
topLabel.text = @"Top Left";
[view addSubview:topLabel];
topLabel.translatesAutoresizingMaskIntoConstraints = NO;
[topLabel.topAnchor
    constraintEqualToAnchor:mapView.navigationHeaderLayoutGuide.bottomAnchor].active = YES;
[topLabel.leadingAnchor constraintEqualToAnchor:mapView.leadingAnchor].active = YES;

/* Add a label to the bottom right, positioned above the footer. */
UILabel *bottomLabel = [[UILabel alloc] init];
bottomLabel.text = @"Bottom Right";
[view addSubview:bottomLabel];
bottomLabel.translatesAutoresizingMaskIntoConstraints = NO;
[bottomLabel.bottomAnchor
    constraintEqualToAnchor:mapView.navigationFooterLayoutGuide.topAnchor].active = YES;
[bottomLabel.trailingAnchor constraintEqualToAnchor:mapView.trailingAnchor].active = YES;

রিয়েল-টাইম বিঘ্ন রিপোর্টিং বোতামের পজিশন ঠিক করতে, bottomTrailingButtonsLayoutGuide কীভাবে ব্যবহার করবেন তার উদাহরণ দেখতে, রিয়েল-টাইম বিঘ্ন কনফিগার করুন দেখুন।

বিকল্প রুট লুকান

ইউজার ইন্টারফেসে অনেক বেশি তথ্য থাকলে, আপনি ডিফল্টের (দুটি) চেয়ে কম বিকল্প রুট দেখিয়ে বা কোনও বিকল্প রুট না দেখিয়ে তথ্য কম করতে পারেন। আপনি GMSNavigationRoutingOptions কনফিগার করে রুট ফেচ করার আগে এই বিকল্প কনফিগার করতে পারবেন এবং alternateRoutesStrategy-কে নিম্নলিখিত গণনা ভ্যালুর মধ্যে একটিতে সেট করতে পারবেন:

গুনতির ভ্যালুবিবরণ
GMSNavigationAlternateRoutesStrategyAll ডিফল্ট। সর্বাধিক দুটি বিকল্প রুট দেখায়।
GMSNavigationAlternateRoutesStrategyOne একটি বিকল্প রুট দেখায় (যদি একটি উপলভ্য থাকে)।
GMSNavigationAlternateRoutesStrategyNone বিকল্প রুট লুকায়।

উদাহরণ

বিকল্প রুট কীভাবে সম্পূর্ণভাবে লুকানো যায় তা নিম্নলিখিত কোডের উদাহরণ থেকে দেখানো হয়েছে।

Swift

let routingOptions = GMSNavigationRoutingOptions(alternateRoutesStrategy: .none)
navigator?.setDestinations(destinations,
                           routingOptions: routingOptions) { routeStatus in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithAlternateRoutesStrategy:GMSNavigationAlternateRoutesStrategyNone];
[navigator setDestinations:destinations
            routingOptions:routingOptions
                  callback:^(GMSRouteStatus routeStatus){...}];