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

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

মানচিত্র UI নিয়ন্ত্রণ

ন্যাভিগেশন SDK কিছু অন্তর্নির্মিত UI নিয়ন্ত্রণ প্রদান করে যা iOS অ্যাপ্লিকেশনের জন্য Google মানচিত্রে পাওয়া যায়। আপনি GMSUISettings ক্লাস ব্যবহার করে এই নিয়ন্ত্রণগুলির দৃশ্যমানতা টগল করতে পারেন। আপনি এই ক্লাসে যে পরিবর্তনগুলি করেন তা অবিলম্বে মানচিত্রে প্রতিফলিত হয়।

কম্পাস

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

যদি নেভিগেশন সক্ষম করা থাকে এবং ক্যামেরা মোড "অনুসরণ করা হয়" তে সেট করা থাকে, তাহলে কম্পাসটি দৃশ্যমান থাকে এবং কম্পাস ট্যাপ করে কাত এবং ওভারভিউ ক্যামেরা দৃষ্টিকোণগুলির মধ্যে টগল করে৷

কম্পাস ডিফল্টরূপে নিষ্ক্রিয় করা হয়. আপনি GMSUISettings -এর compassButton প্রপার্টিটিকে true সেট করে কম্পাস সক্রিয় করতে পারেন। যাইহোক, আপনি কম্পাসটিকে সর্বদা দেখানোর জন্য জোর করতে পারবেন না।

সুইফট

mapView.settings.compassButton = true

উদ্দেশ্য-C

mapView.settings.compassButton = YES;

আমার অবস্থান বোতাম

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

সুইফট

mapView.settings.myLocationButton = true

উদ্দেশ্য-C

mapView.settings.myLocationButton = YES;

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

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

সুইফট

mapView.settings.isRecenterButtonEnabled = true

উদ্দেশ্য-C

mapView.settings.recenterButtonEnabled = YES;

ম্যাপ UI আনুষাঙ্গিক

ন্যাভিগেশন SDK UI আনুষাঙ্গিক সরবরাহ করে যা নেভিগেশনের সময় iOS অ্যাপ্লিকেশনের জন্য Google মানচিত্রের মতোই দেখা যায়। এই বিভাগে বর্ণিত হিসাবে আপনি এই নিয়ন্ত্রণগুলির দৃশ্যমানতা বা চাক্ষুষ চেহারা সামঞ্জস্য করতে পারেন। আপনি এখানে যে পরিবর্তনগুলি করেন তা ব্যবহারকারীর পরবর্তী ভ্রমণের সময় প্রতিফলিত হয়৷

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

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

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

নিম্নলিখিত কোড উদাহরণটি হেডার এবং ফুটারের জন্য দৃশ্যমানতা চালু করা দেখায়, তারপরে navigationHeaderPrimaryBackgroundColor ব্যাকগ্রাউন্ড কালারকে নীল এবং navigationHeaderSecondaryBackgroundColor ব্যাকগ্রাউন্ড কালারকে লাল করে।

সুইফট

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

উদ্দেশ্য-C

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

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

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

কাস্টম হেডার আনুষঙ্গিক ভিউ সরাতে, setHeaderAccessoryView: ভিউতে nil পাস করুন:।

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

উদাহরণ

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

সুইফট

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)

উদ্দেশ্য-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];

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

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

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

নিম্নলিখিত কোড উদাহরণ একটি DirectionsListViewController যোগ দেখায়।

সুইফট

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)
  // Ensure 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()
  })
  ...
}

উদ্দেশ্য-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];
  // Ensure 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];
  ...
}

...

ট্রিপ অগ্রগতি বার

ট্রিপ অগ্রগতি বার নেভিগেশন যোগ করা হয়েছে.

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

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

ট্রিপ প্রগ্রেস বার নিম্নলিখিত স্থিতি সূচকগুলি প্রদর্শন করে:

  • ট্র্যাফিক অবস্থা - আসন্ন ট্র্যাফিকের অবস্থা।

  • বর্তমান অবস্থান — ট্রিপে ড্রাইভারের বর্তমান অবস্থান।

  • পথ কেটে গেছে —যাত্রার অতিবাহিত অংশ।

GMSUISসেটিং -এ navigationTripProgressBarEnabled প্রপার্টি সেট করে ট্রিপ প্রগ্রেস বার সক্রিয় করুন।

সুইফট

mapView.settings.isNavigationTripProgressBarEnabled = true

উদ্দেশ্য-C

mapView.settings.navigationTripProgressBarEnabled = YES;

ট্রাফিক লাইট এবং স্টপ সাইন

নেভিগেশনের সময় স্টপ সাইন এবং ট্রাফিক লাইট দেখানো হয়।

আপনি mapView ট্রাফিক লাইট এবং স্টপ সাইন সক্ষম করতে পারেন। এই বৈশিষ্ট্যটির সাহায্যে, ব্যবহারকারী ট্র্যাফিক লাইট প্রদর্শন সক্ষম করতে পারে বা তাদের রুটে সাইন আইকন বন্ধ করতে পারে, আরও দক্ষ এবং সঠিক ভ্রমণের জন্য আরও ভাল প্রসঙ্গ প্রদান করে।

ডিফল্টরূপে, iOS-এর জন্য নেভিগেশন SDK-এ ট্র্যাফিক লাইট এবং স্টপ সাইনগুলি অক্ষম থাকে৷ এই বৈশিষ্ট্যটি সক্ষম করতে, প্রতিটি বিকল্পের জন্য স্বাধীনভাবে GMSMapView সেটিংসে কল করুন: showsTrafficLights এবং showsStopSigns


সুইফট

mapView.settings.showsTrafficLights = true
mapView.settings.showsStopSigns = true

উদ্দেশ্য-C

mapView.settings.showsTrafficLights = YES;
mapView.settings.showsStopSigns = YES;

স্পিডোমিটার নিয়ন্ত্রণ

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

যখন ড্রাইভার একটি নির্দিষ্ট পরিমাণে গতিসীমা অতিক্রম করে তখন আপনি স্পিডোমিটার প্রদর্শনের বিন্যাস পরিবর্তন করতে সতর্কতা স্তর সেট করতে পারেন। উদাহরণ স্বরূপ, আপনি উল্লেখ করতে পারেন যে ড্রাইভার যখন গতি সীমা 5 mph অতিক্রম করে তখন বর্তমান গতি একটি লাল টেক্সট রঙের সাথে প্রদর্শিত হয় এবং যখন ড্রাইভার 10 mph গতি সীমা অতিক্রম করে তখন একটি লাল পটভূমির রঙের সাথে।

গতি সীমা নিয়ন্ত্রণ প্রদর্শন করতে, GMSUISettings -এর shouldDisplaySpeedometer প্রপার্টিটিকে true সেট করুন। স্পিড লিমিট কন্ট্রোলের ডিসপ্লে ডিসঅ্যাবল করতে, shouldDisplaySpeedometer false সেট করুন।

সুইফট

mapView.shouldDisplaySpeedometer = true

উদ্দেশ্য-C

mapView.shouldDisplaySpeedometer = YES;

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

গন্তব্য চিহ্নিতকারী

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

সুইফট

mapView.settings.showsDestinationMarkers = false

উদ্দেশ্য-C

mapView.settings.showsDestinationMarkers = NO;

মানচিত্র অভিজ্ঞতা বৈশিষ্ট্য

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

ডিফল্ট মানচিত্র অঙ্গভঙ্গি অক্ষম করুন

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

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

এই উদাহরণে, প্যান এবং জুম উভয় অঙ্গভঙ্গি অক্ষম করা হয়েছে৷

সুইফট

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

উদ্দেশ্য-C

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

অবস্থান নিয়ন্ত্রণ এবং UI উপাদান

আপনি নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করে নেভিগেশন হেডার এবং ফুটারের অবস্থানের সাথে সম্পর্কিত নিয়ন্ত্রণ এবং অন্যান্য UI উপাদানগুলিকে অবস্থান করতে পারেন:

  • navigationHeaderLayoutGuide
  • navigationFooterLayoutGuide

নিম্নলিখিত কোড উদাহরণ মানচিত্র দৃশ্যে লেবেলগুলির একটি জোড়া অবস্থান করতে লেআউট গাইড ব্যবহার করে দেখায়:

সুইফট

/* 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

উদ্দেশ্য-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;

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

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

গণনা মান বর্ণনা
GMSNavigationAlternateRoutes Strategy All ডিফল্ট দুটি বিকল্প রুট পর্যন্ত প্রদর্শন করে।
GMSNavigationAlternateRoutesStrategyOne একটি বিকল্প পথ প্রদর্শন করে (যদি একটি উপলব্ধ থাকে)।
GMSNavigationAlternateRoutes StrategyNone বিকল্প পথ লুকিয়ে রাখে।

উদাহরণ

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

সুইফট

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

উদ্দেশ্য-C

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

,

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

মানচিত্র UI নিয়ন্ত্রণ

ন্যাভিগেশন SDK কিছু অন্তর্নির্মিত UI নিয়ন্ত্রণ প্রদান করে যা iOS অ্যাপ্লিকেশনের জন্য Google মানচিত্রে পাওয়া যায়। আপনি GMSUISettings ক্লাস ব্যবহার করে এই নিয়ন্ত্রণগুলির দৃশ্যমানতা টগল করতে পারেন। আপনি এই ক্লাসে যে পরিবর্তনগুলি করেন তা অবিলম্বে মানচিত্রে প্রতিফলিত হয়।

কম্পাস

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

যদি নেভিগেশন সক্ষম করা থাকে এবং ক্যামেরা মোড "অনুসরণ করা হয়" তে সেট করা থাকে, তাহলে কম্পাসটি দৃশ্যমান থাকে এবং কম্পাস ট্যাপ করে কাত এবং ওভারভিউ ক্যামেরা দৃষ্টিকোণগুলির মধ্যে টগল করে৷

কম্পাস ডিফল্টরূপে নিষ্ক্রিয় করা হয়. আপনি GMSUISettings -এর compassButton প্রপার্টিটিকে true সেট করে কম্পাস সক্রিয় করতে পারেন। যাইহোক, আপনি কম্পাসটিকে সর্বদা দেখানোর জন্য জোর করতে পারবেন না।

সুইফট

mapView.settings.compassButton = true

উদ্দেশ্য-C

mapView.settings.compassButton = YES;

আমার অবস্থান বোতাম

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

সুইফট

mapView.settings.myLocationButton = true

উদ্দেশ্য-C

mapView.settings.myLocationButton = YES;

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

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

সুইফট

mapView.settings.isRecenterButtonEnabled = true

উদ্দেশ্য-C

mapView.settings.recenterButtonEnabled = YES;

ম্যাপ UI আনুষাঙ্গিক

ন্যাভিগেশন SDK UI আনুষাঙ্গিক সরবরাহ করে যা নেভিগেশনের সময় iOS অ্যাপ্লিকেশনের জন্য Google মানচিত্রের মতোই দেখা যায়। এই বিভাগে বর্ণিত হিসাবে আপনি এই নিয়ন্ত্রণগুলির দৃশ্যমানতা বা চাক্ষুষ চেহারা সামঞ্জস্য করতে পারেন। আপনি এখানে যে পরিবর্তনগুলি করেন তা ব্যবহারকারীর পরবর্তী ভ্রমণের সময় প্রতিফলিত হয়৷

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

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

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

নিম্নলিখিত কোড উদাহরণটি হেডার এবং ফুটারের জন্য দৃশ্যমানতা চালু করা দেখায়, তারপরে navigationHeaderPrimaryBackgroundColor ব্যাকগ্রাউন্ড কালারকে নীল এবং navigationHeaderSecondaryBackgroundColor ব্যাকগ্রাউন্ড কালারকে লাল করে।

সুইফট

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

উদ্দেশ্য-C

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

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

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

কাস্টম হেডার আনুষঙ্গিক ভিউ সরাতে, setHeaderAccessoryView: ভিউতে nil পাস করুন:।

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

উদাহরণ

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

সুইফট

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)

উদ্দেশ্য-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];

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

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

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

নিম্নলিখিত কোড উদাহরণ একটি DirectionsListViewController যোগ দেখায়।

সুইফট

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)
  // Ensure 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()
  })
  ...
}

উদ্দেশ্য-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];
  // Ensure 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];
  ...
}

...

ট্রিপ অগ্রগতি বার

ট্রিপ অগ্রগতি বার নেভিগেশন যোগ করা হয়েছে.

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

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

ট্রিপ প্রগ্রেস বার নিম্নলিখিত স্থিতি সূচকগুলি প্রদর্শন করে:

  • ট্র্যাফিক অবস্থা - আসন্ন ট্র্যাফিকের অবস্থা।

  • বর্তমান অবস্থান — ট্রিপে ড্রাইভারের বর্তমান অবস্থান।

  • পথ কেটে গেছে —যাত্রার অতিবাহিত অংশ।

GMSUISসেটিং -এ navigationTripProgressBarEnabled প্রপার্টি সেট করে ট্রিপ প্রগ্রেস বার সক্রিয় করুন।

সুইফট

mapView.settings.isNavigationTripProgressBarEnabled = true

উদ্দেশ্য-C

mapView.settings.navigationTripProgressBarEnabled = YES;

ট্রাফিক লাইট এবং স্টপ সাইন

নেভিগেশনের সময় স্টপ সাইন এবং ট্রাফিক লাইট দেখানো হয়।

আপনি mapView ট্রাফিক লাইট এবং স্টপ সাইন সক্ষম করতে পারেন। এই বৈশিষ্ট্যটির সাহায্যে, ব্যবহারকারী ট্র্যাফিক লাইট প্রদর্শন সক্ষম করতে পারে বা তাদের রুটে সাইন আইকন বন্ধ করতে পারে, আরও দক্ষ এবং সঠিক ভ্রমণের জন্য আরও ভাল প্রসঙ্গ প্রদান করে।

ডিফল্টরূপে, iOS-এর জন্য নেভিগেশন SDK-এ ট্র্যাফিক লাইট এবং স্টপ সাইনগুলি অক্ষম থাকে৷ এই বৈশিষ্ট্যটি সক্ষম করতে, প্রতিটি বিকল্পের জন্য স্বাধীনভাবে GMSMapView সেটিংসে কল করুন: showsTrafficLights এবং showsStopSigns


সুইফট

mapView.settings.showsTrafficLights = true
mapView.settings.showsStopSigns = true

উদ্দেশ্য-C

mapView.settings.showsTrafficLights = YES;
mapView.settings.showsStopSigns = YES;

স্পিডোমিটার নিয়ন্ত্রণ

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

যখন ড্রাইভার একটি নির্দিষ্ট পরিমাণে গতিসীমা অতিক্রম করে তখন আপনি স্পিডোমিটার প্রদর্শনের বিন্যাস পরিবর্তন করতে সতর্কতা স্তর সেট করতে পারেন। উদাহরণ স্বরূপ, আপনি উল্লেখ করতে পারেন যে ড্রাইভার যখন গতি সীমা 5 mph অতিক্রম করে তখন বর্তমান গতি একটি লাল টেক্সট রঙের সাথে প্রদর্শিত হয় এবং যখন ড্রাইভার 10 mph গতি সীমা অতিক্রম করে তখন একটি লাল পটভূমির রঙের সাথে।

গতি সীমা নিয়ন্ত্রণ প্রদর্শন করতে, GMSUISettings -এর shouldDisplaySpeedometer প্রপার্টি true সেট করুন। স্পিড লিমিট কন্ট্রোলের ডিসপ্লে ডিসঅ্যাবল করতে, shouldDisplaySpeedometer false সেট করুন।

সুইফট

mapView.shouldDisplaySpeedometer = true

উদ্দেশ্য-C

mapView.shouldDisplaySpeedometer = YES;

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

গন্তব্য চিহ্নিতকারী

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

সুইফট

mapView.settings.showsDestinationMarkers = false

উদ্দেশ্য-C

mapView.settings.showsDestinationMarkers = NO;

মানচিত্র অভিজ্ঞতা বৈশিষ্ট্য

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

ডিফল্ট মানচিত্র অঙ্গভঙ্গি অক্ষম করুন

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

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

এই উদাহরণে, প্যান এবং জুম উভয় অঙ্গভঙ্গি অক্ষম করা হয়েছে৷

সুইফট

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

উদ্দেশ্য-C

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

অবস্থান নিয়ন্ত্রণ এবং UI উপাদান

আপনি নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করে নেভিগেশন হেডার এবং ফুটারের অবস্থানের সাথে সম্পর্কিত নিয়ন্ত্রণ এবং অন্যান্য UI উপাদানগুলিকে অবস্থান করতে পারেন:

  • navigationHeaderLayoutGuide
  • navigationFooterLayoutGuide

নিম্নলিখিত কোড উদাহরণ মানচিত্র দৃশ্যে লেবেলগুলির একটি জোড়া অবস্থান করতে লেআউট গাইড ব্যবহার করে দেখায়:

সুইফট

/* 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

উদ্দেশ্য-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;

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

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

গণনা মান বর্ণনা
GMSNavigationAlternateRoutes Strategy All ডিফল্ট দুটি বিকল্প রুট পর্যন্ত প্রদর্শন করে।
GMSNavigationAlternateRoutesStrategyOne একটি বিকল্প পথ প্রদর্শন করে (যদি একটি উপলব্ধ থাকে)।
GMSNavigationAlternateRoutes StrategyNone বিকল্প পথ লুকিয়ে রাখে।

উদাহরণ

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

সুইফট

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

উদ্দেশ্য-C

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