Regola la videocamera

La videocamera ti consente di modificare la modalità punto di vista della mappa. Puoi usare le modalità fotocamera per controllare il comportamento del durante la navigazione. Per impostare la modalità fotocamera, imposta la proprietà cameraMode di la visualizzazione mappa, specificando una delle seguenti costanti di modalità fotocamera:

  • Segui: la modalità fotocamera predefinita per la navigazione. Cambia la visualizzazione di 45 gradi e posiziona la fotocamera dietro la posizione corrente rivolta la direzione di uno spostamento. Durante la navigazione, la fotocamera si regola automaticamente da affrontare nella direzione del viaggio. Premere il pulsante Ricentra sulla mappa passeranno a questa modalità. Il pulsante Riposiziona non è visibile quando per selezionare questa modalità.

  • Panoramica: visualizza una panoramica dell'intero percorso, con un eventuale aumento dello zoom. per adattare il percorso alla visualizzazione mappa. Quando questa visualizzazione è selezionata, Il pulsante Ricentra è visibile.

  • Senza costi: consente all'utente di cambiare la visualizzazione della mappa con gesti. In questa visualizzazione la videocamera rimane ferma. La mappa entra automaticamente questa visualizzazione se l'utente esegue la panoramica o lo zoom durante la navigazione. Quando questa vista è dell'immagine, il pulsante Riposiziona è visibile.

Per cambiare la modalità fotocamera, imposta la proprietà cameraMode della visualizzazione mappa come mostrato qui:

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;

Ricentra automaticamente la mappa

Quando gli utenti muovono la mappa in modalità di navigazione, la modalità fotocamera per la mappa. vedi le modifiche dalla modalità seguente alla modalità libera. La fotocamera riprende a seguire quando l'utente preme esplicitamente Ricentra. Puoi automatizzare il processo torna alla modalità successiva utilizzando un timer per impostare un intervallo tra un'uscita e l'altra modalità seguire, per poi tornare automaticamente a quest'ultima.

Esempio

Il seguente esempio di codice verifica se la mappa viene spostata in base a all'utente in modalità di navigazione. In tal caso, imposta un timer per commutare dalla modalità fotocamera alla modalità Segui, centrando la mappa dopo cinque secondi.

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