ক্যামেরা সামঞ্জস্য করুন

ক্যামেরা আপনাকে মানচিত্রের ব্যবহারকারীর দৃষ্টিভঙ্গি পরিবর্তন করতে দেয়। নেভিগেশন চলাকালীন মানচিত্রের আচরণ নিয়ন্ত্রণ করতে আপনি ক্যামেরা মোড ব্যবহার করতে পারেন। ক্যামেরা মোড সেট করতে, নিম্নলিখিত ক্যামেরা মোড ধ্রুবকগুলির মধ্যে একটি নির্দিষ্ট করে মানচিত্র দৃশ্যের cameraMode বৈশিষ্ট্য সেট করুন:

  • অনুসরণ করছে — নেভিগেশনের জন্য ডিফল্ট ক্যামেরা মোড। ভিউ অ্যাঙ্গেল 45 ডিগ্রীতে পরিবর্তন করে এবং ক্যামেরাটিকে ভ্রমণের দিকের দিকে মুখ করে বর্তমান অবস্থানের পিছনে রাখে। নেভিগেশন চলাকালীন ক্যামেরা স্বয়ংক্রিয়ভাবে ভ্রমণের দিকে মুখের সাথে সামঞ্জস্য করে। ম্যাপের রি-সেন্টার বোতাম টিপেও এই মোডে স্যুইচ হবে৷ যখন এই মোডটি নির্বাচন করা হয় তখন পুনরায় কেন্দ্র বোতামটি দৃশ্যমান হয় না৷

  • ওভারভিউ — পুরো রুটের একটি ওভারভিউ দেখায়, ম্যাপ ভিউতে রুট ফিট করার জন্য প্রয়োজন অনুযায়ী জুম করে। যখন এই দৃশ্যটি নির্বাচন করা হয় তখন পুনরায় কেন্দ্র বোতামটি দৃশ্যমান হয়৷

  • বিনামূল্যে — ব্যবহারকারীকে অঙ্গভঙ্গি সহ মানচিত্রের দৃশ্য পরিবর্তন করতে দেয়৷ এই দৃশ্যে ক্যামেরা স্থির থাকে। ন্যাভিগেশনের সময় ব্যবহারকারী প্যান বা জুম করলে মানচিত্রটি স্বয়ংক্রিয়ভাবে এই দৃশ্যে প্রবেশ করবে। যখন এই দৃশ্যটি নির্বাচন করা হয় তখন পুনরায় কেন্দ্র বোতামটি দৃশ্যমান হয়৷

ক্যামেরা মোড পরিবর্তন করতে, মানচিত্র দৃশ্যের cameraMode বৈশিষ্ট্য সেট করুন, এখানে দেখানো হয়েছে:

সুইফট

// Set the mode to "overview":
mapView.cameraMode = .overview

// Set the mode to "free":
mapView.cameraMode = .free

// Set the mode to "following":
mapView.cameraMode = .following

উদ্দেশ্য-C

// Set the mode to "overview":
mapView.cameraMode = GMSNavigationCameraModeOverview;

// Set the mode to "free":
mapView.cameraMode = GMSNavigationCameraModeFree;

// Set the mode to "following":
mapView.cameraMode = GMSNavigationCameraModeFollowing;

মানচিত্রটি স্বয়ংক্রিয়ভাবে রিসেন্টার করুন

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

উদাহরণ

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

সুইফট

class YourViewController: UIViewController {

  @IBOutlet weak var mapView: GMSMapView!
  var autoFollowTimer: Timer!

  override func viewDidLoad() {
    super.viewDidLoad()
    mapView.delegate = self
    ...
  }

  ...
}

/** Implements the GMSMapViewDelegate protocol. */
extension YourViewController: GMSMapViewDelegate {
  func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
    if mapView.navigator?.isGuidanceActive == false {return}
    if !gesture {return}

    autoFollowTimer?.invalidate()
    autoFollowTimer = Timer(
      timeInterval: TimeInterval(5.0),
      target: self,
      selector: #selector(recenterMap),
      userInfo: nil,
      repeats: false)
    RunLoop.current.add(autoFollowTimer, forMode: .default)
  }

  /** Centers the map in guidance mode. */
  @objc private func recenterMap() {
    if mapView.navigator?.isGuidanceActive == true {
       mapView.cameraMode = .following
    }

    autoFollowTimer.invalidate()
    autoFollowTimer = nil
  }
}

উদ্দেশ্য-C

@interface YourViewController : UIViewController<GMSMapViewDelegate>
...
@end


@implementation YourViewController {
  GMSMapView *_mapView;
  NSTimer *_autoFollowTimer;
  ...
}

...

- (void)viewDidLoad {
  [super viewDidLoad];
  ...
  _mapView.delegate = self;
  ...
}

...

/** Implements the GMSMapViewDelegate protocol. */
- (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture {
  if (!_mapView.navigator.guidanceActive) return;
  if (!gesture) return;

  [_autoFollowTimer invalidate];
  _autoFollowTimer = [NSTimer scheduledTimerWithTimeInterval:5.0
                                                      target:self
                                                    selector:@selector(recenterMap)
                                                    userInfo:nil
                                                     repeats:NO];
}

/** Centers the map in guidance mode. */
- (void)recenterMap {
  if (_mapView.navigator.guidanceActive) {
    _mapView.cameraMode = GMSNavigationCameraModeFollowing;
  }

  [_autoFollowTimer invalidate];
  _autoFollowTimer = nil;
}

@end