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

कैमरे की मदद से, मैप के कैमरा सेटिंग में बदलाव करके, उपयोगकर्ता के मैप देखने का तरीका बदला जा सकता है. नेविगेशन के दौरान, मैप के काम करने के तरीके को कंट्रोल करने के लिए, कैमरे के मोड इस्तेमाल किए जा सकते हैं. कैमरे का मोड सेट करने के लिए, मैप व्यू की 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