कैमरा अडजस्ट करें

कैमरा की मदद से, उपयोगकर्ता का मैप व्यूपॉइंट बदला जा सकता है. आप नेविगेशन के दौरान मैप के व्यवहार को नियंत्रित करने के लिए कैमरा मोड का उपयोग कर सकते हैं. कैमरा मोड सेट करने के लिए, मैप व्यू की cameraMode प्रॉपर्टी सेट करें. इसमें, कैमरा मोड के इन कॉन्स्टेंट में से किसी एक को शामिल करें:

  • फ़ॉलो किया जा रहा है — नेविगेशन के लिए डिफ़ॉल्ट कैमरा मोड. व्यू ऐंगल को 45 डिग्री पर सेट करता है और कैमरे को मौजूदा पोज़िशन के पीछे फ़ोकस करता है. नेविगेशन के दौरान कैमरा, यात्रा की दिशा में आपके चेहरे के हिसाब से अपने-आप अडजस्ट हो जाता है. मैप का री-सेंटर बटन दबाने पर भी इस मोड पर स्विच हो जाएगा. इस मोड को चुनने पर, फिर से सेंटर में लाएं बटन नहीं दिखता.

  • ओवरव्यू — यह रूट को मैप व्यू में फ़िट करने के लिए, ज़रूरत के हिसाब से ज़ूम करके, पूरे रास्ते की जानकारी दिखाता है. इस व्यू को चुनने पर, फिर से सेंटर में लाएं बटन दिखता है.

  • मुफ़्त — इससे उपयोगकर्ता, हाथ के जेस्चर की मदद से मैप व्यू बदल सकता है. इस व्यू में कैमरा स्थिर रहता है. अगर नेविगेशन के दौरान उपयोगकर्ता पैन या ज़ूम करता है, तो मैप अपने-आप इस व्यू में चला जाएगा. इस व्यू को चुनने पर, फिर से सेंटर में लाएं बटन दिखता है.

कैमरा मोड बदलने के लिए, मैप व्यू की cameraMode प्रॉपर्टी सेट करें, जैसा कि यहां दिखाया गया है:

Swift

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

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

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

Objective-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;

मैप को अपने-आप फिर से बीच में लाएं

जब उपयोगकर्ता मैप को नेविगेशन मोड में मूव करते हैं, तो मैप का कैमरा मोड, नीचे दिए गए मोड से मुफ़्त मोड में बदल जाता है. जब उपयोगकर्ता साफ़ तौर पर री-सेंटर बटन दबाता है, तो कैमरा नीचे दिए गए मोड पर वापस आ जाता है. आप टाइमर का इस्तेमाल करके, इस मोड में वापस आने की प्रोसेस को ऑटोमेट कर सकते हैं, ताकि आप फ़ॉलो मोड को छोड़ने के बीच का अंतराल सेट कर सकें. इसके बाद, इस मोड पर अपने-आप वापस आ जाएं.

उदाहरण

नीचे दिए गए उदाहरण में यह जांच की गई है कि नेविगेशन मोड में रहते हुए उपयोगकर्ता, मैप को एक जगह से दूसरी जगह ले जा रहा है या नहीं. अगर ऐसा है, तो यह कैमरा मोड को फ़ॉलो मोड में स्विच करने के लिए टाइमर सेट करता है. साथ ही, टाइमर को पांच सेकंड के बाद मैप को बीच में करता है.

Swift

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
  }
}

Objective-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