নেভিগেশন 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-তে আপনার view-এর জন্য উপলভ্য সর্বাধিক সাইজ দেওয়া হয়েছে এবং আপনার view-এর জন্য প্রয়োজনীয় হাইট আপনাকে অবশ্যই দিতে হবে।

তারপরে, আপনি 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-এর জন্য নেভিগেশন 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 (পরীক্ষামূলক)

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

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

নেভিগেশন চালু করা থাকলে এবং ভ্রমণের মোড ড্রাইভিং হিসেবে সেট করা থাকলে, iOS-এর জন্য নেভিগেশন 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){...}];