Con Maps SDK for iOS, puoi modificare il punto di vista dell'utente sulla mappa cambiando la fotocamera della mappa.
Con Maps SDK for iOS, gli utenti possono inclinare e ruotare le mappe per adattarle a un orientamento utile per il loro contesto. A qualsiasi livello di zoom, gli utenti possono spostare la mappa o modificarne la prospettiva con una latenza molto bassa.
Le modifiche alla fotocamera non modificano gli indicatori, le polilinee o altri elementi grafici che hai aggiunto, anche se potresti voler modificare queste aggiunte per adattarle meglio alla nuova visualizzazione.
La visualizzazione della mappa
Maps SDK for iOS utilizza la proiezione di Mercatore per rappresentare la superficie del mondo (una sfera) sullo schermo del dispositivo (un piano piatto).
La posizione della videocamera
La visualizzazione mappa è modellata come una fotocamera che guarda verso il basso su un piano piatto. La posizione della fotocamera (e quindi il rendering della mappa) è specificata dalle seguenti proprietà: target (posizione di latitudine/longitudine), bearing, tilt e zoom.
Target (località)
Il target della fotocamera è la posizione del centro della mappa, specificata come coordinate di latitudine e longitudine.
La latitudine può essere compresa tra -85 e 85 gradi inclusi. I valori superiori o inferiori a questo intervallo verranno limitati al valore più vicino all'interno dell'intervallo. Ad esempio, se specifichi una latitudine di 100, il valore verrà impostato su 85. La longitudine è compresa tra -180 e 180 gradi inclusi. I valori al di sopra o al di sotto di questo intervallo verranno adattati in modo da rientrare nell'intervallo (-180, 180). Ad esempio, 480, 840 e 1200 verranno tutti convertiti in 120 gradi.Orientamento
La direzione della fotocamera specifica la direzione della bussola, misurata in gradi rispetto al nord geografico, corrispondente al bordo superiore della mappa. Se tracci una linea verticale dal centro della mappa al bordo superiore della mappa, la direzione corrisponde all'orientamento della fotocamera (misurato in gradi) rispetto al nord geografico.
Un orientamento pari a 0 indica che la parte superiore della mappa punta verso il nord geografico. Un valore di orientamento pari a 90 indica che la parte superiore della mappa punta verso est (90 gradi su una bussola). Un valore pari a 180 indica che la parte superiore della mappa è rivolta verso sud.
L'API di Google Maps ti consente di modificare l'orientamento di una mappa. Ad esempio, chi guida un'auto spesso ruota una mappa stradale per allinearla alla direzione di marcia, mentre gli escursionisti che utilizzano una mappa e una bussola di solito orientano la mappa in modo che una linea verticale punti verso nord.
Inclinazione (angolo di visione)
L'inclinazione definisce la posizione della fotocamera su un arco direttamente sopra la posizione centrale della mappa, misurata in gradi dal nadir (la direzione che punta direttamente sotto la fotocamera). Un valore pari a 0 corrisponde a una videocamera puntata verso il basso. I valori maggiori di 0 corrispondono a una fotocamera inclinata verso l'orizzonte del numero di gradi specificato. Quando modifichi l'angolo di visualizzazione, la mappa viene visualizzata in prospettiva, con gli elementi lontani che appaiono più piccoli e quelli vicini che appaiono più grandi. Le seguenti illustrazioni lo dimostrano.
Nelle immagini di seguito, l'angolo di visione è di 0 gradi. La prima immagine mostra uno schema di questo: la posizione 1 è la posizione della videocamera e la posizione 2 è la posizione attuale sulla mappa. La mappa risultante viene visualizzata sotto.
|
|
Nelle immagini di seguito, l'angolo di visione è di 45 gradi. Nota che la videocamera si sposta a metà di un arco tra la posizione perpendicolare (0 gradi) e il suolo (90 gradi), fino alla posizione 3. La fotocamera è ancora puntata sul punto centrale della mappa, ma l'area rappresentata dalla linea nella posizione 4 è ora visibile.
|
|
La mappa in questo screenshot è ancora centrata sullo stesso punto della mappa originale, ma nella parte superiore della mappa sono apparse altre funzionalità. Se aumenti l'angolo oltre i 45 gradi, gli elementi tra la videocamera e la posizione della mappa appaiono proporzionalmente più grandi, mentre gli elementi oltre la posizione della mappa appaiono proporzionalmente più piccoli, creando un effetto tridimensionale.
Zoom
Il livello di zoom della fotocamera determina la scala della mappa. A livelli di zoom più elevati, sullo schermo è possibile visualizzare maggiori dettagli, mentre a livelli di zoom più bassi è possibile visualizzare una parte più ampia del mondo. Al livello di zoom 0, la scala della mappa è tale che l'intero mondo ha una larghezza di circa 256 punti.
Se aumenti il livello di zoom di 1, la larghezza del mondo sullo schermo raddoppia. Pertanto, al livello di zoom N, la larghezza del mondo è di circa 256 * 2N punti. Ad esempio, al livello di zoom 2, l'intero mondo è largo circa 1024 punti.
Il livello di zoom non deve essere un numero intero. La gamma di livelli di zoom consentiti dalla mappa dipende da una serie di fattori, tra cui la destinazione, il tipo di mappa e le dimensioni dello schermo. Qualsiasi numero al di fuori dell'intervallo verrà convertito nel valore valido più vicino, che può essere il livello di zoom minimo o massimo. Il seguente elenco mostra il livello di dettaglio approssimativo che puoi aspettarti di vedere a ogni livello di zoom:
- 1: Dal mondo
- 5: massa continentale/continente
- 10: Città
- 15: Strade
- 20: Edifici
|
|
|
Imposta la posizione iniziale della videocamera
Imposta la posizione iniziale della videocamera utilizzando l'oggetto GMSCameraPosition, che ti consente di impostare la latitudine e la longitudine della destinazione, nonché l'orientamento, l'inclinazione e lo zoom.
Per impostare la posizione iniziale della fotocamera, crea un oggetto GMSMapViewOptions e imposta la proprietà camera su un GMSCameraPosition. Quindi, passa le opzioni al costruttore di convenienza GMSMapView.
Swift
let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 16) let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:16]; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
Puoi anche creare l'oggetto GMSMapView utilizzando il metodo di inizializzazione UIView predefinito. In questo caso, la posizione della videocamera inizia nella località predefinita e la modifichi dopo la creazione.
Swift
let options = GMSMapViewOptions() options.frame = self.view.bounds let mapView = GMSMapView(options:options)
Objective-C
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.frame = self.view.bounds; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
Modifica la posizione della videocamera
Puoi modificare in modo programmatico la posizione della videocamera per impostare la posizione, l'orientamento, l'inclinazione e lo zoom. Sebbene GMSMapView fornisca diversi metodi che puoi utilizzare per modificare la posizione della videocamera, in genere utilizzi GMSCameraPosition o GMSCameraUpdate:
GMSCameraPositioncontiene proprietà e metodi che utilizzi per modificare ogni parametro della posizione della videocamera: target, orientamento, inclinazione e zoom.GMSCameraUpdateconsente di modificare il target, l'orientamento, l'inclinazione e lo zoom e contiene anche altri metodi pratici per supportare lo scorrimento, lo zoom avanzato, il posizionamento della fotocamera entro limiti predefiniti e altro ancora.
Quando sposti la videocamera, puoi scegliere di "agganciarla" alla nuova posizione, il che significa che non c'è animazione, oppure di animare lo spostamento. Ad esempio, se animi una modifica alla località target della videocamera, l'animazione si sposta dalla posizione precedente a quella nuova.
L'animazione esegue l'interpolazione tra gli attributi della fotocamera attuali e quelli nuovi. Puoi controllare la durata dell'animazione utilizzando Core Animation.
Utilizza GMSCameraPosition
Per cambiare la videocamera con
GMSCameraPosition,
crea un nuovo oggetto o copia un oggetto esistente, quindi impostalo sull'oggetto
GMSMapView. Utilizza l'oggetto GMSCameraPosition per agganciare la fotocamera alla nuova posizione con o senza animazione.
Utilizza un oggetto GMSCameraPosition per configurare le proprietà della fotocamera, ad esempio latitudine, longitudine, zoom, orientamento e angolo di visualizzazione. Poi utilizzi l'oggetto per impostare la proprietà camera di GMSMapView.
Swift
let fancy = GMSCameraPosition( latitude: -33, longitude: 151, zoom: 6, bearing: 270, viewingAngle: 45 ) mapView.camera = fancy
Objective-C
GMSCameraPosition *fancy = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6 bearing:30 viewingAngle:45]; [mapView setCamera:fancy];
Ometti qualsiasi proprietà GMSCameraPosition che vuoi impostare sul valore predefinito.
Per animare lo spostamento, utilizza il metodo animateToCameraPosition: anziché impostare la proprietà camera.
Utilizza GMSCameraUpdate
GMSCameraUpdate
consente di aggiornare la posizione della videocamera e scegliere se agganciare o animare la nuova posizione. Il vantaggio di GMSCameraUpdate è la praticità. Puoi utilizzare GMSCameraPosition per eseguire le stesse attività di GMSCameraUpdate, ma GMSCameraUpdate fornisce metodi helper aggiuntivi per semplificare la manipolazione della fotocamera.
Ad esempio, per utilizzare GMSCameraPosition per aumentare il livello di zoom corrente, devi prima determinare il livello di zoom corrente, quindi creare un oggetto GMSCameraPosition in cui imposti lo zoom su un valore superiore di uno rispetto allo zoom corrente.
In alternativa, crea un oggetto GMSCameraUpdate con il metodo zoomIn:.
Quindi, aggiorna la videocamera passando l'oggetto GMSCameraUpdate al metodo animateWithCameraUpdate: GMSMapView.
Swift
// Zoom in one zoom level let zoomCamera = GMSCameraUpdate.zoomIn() mapView.animate(with: zoomCamera)
Objective-C
// Zoom in one zoom level GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn]; [mapView animateWithCameraUpdate:zoomCamera];
Utilizza invece il metodo GMSMapView moveCamera: per agganciare la fotocamera alla nuova posizione.
Nell'esempio successivo, utilizzi GMSCameraUpdate per animare uno spostamento della fotocamera per centrarla su Vancouver.
Swift
// Center the camera on Vancouver, Canada let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11) let vancouverCam = GMSCameraUpdate.setTarget(vancouver) mapView.animate(with: vancouverCam)
Objective-C
// Center the camera on Vancouver, Canada CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11); GMSCameraUpdate *vancouverCam = [GMSCameraUpdate setTarget:vancouver]; [mapView animateWithCameraUpdate:vancouverCam];
Crea un oggetto GMSCameraUpdate
Crea un oggetto GMSCameraUpdate utilizzando uno dei suoi metodi.
zoomIn:ezoomOut:- Modifica il livello di zoom corrente di 1,0, mantenendo invariate tutte le altre proprietà.
zoomTo:- Modifica il livello di zoom impostandolo sul valore specificato, mantenendo invariate tutte le altre proprietà.
zoomBy:- Aumenta (o diminuisce, se il valore è negativo) il livello di zoom del valore specificato.
zoomBy:atPoint:- Aumenta (o diminuisce, se il valore è negativo) il livello di zoom del valore specificato, mantenendo la posizione del punto specificato sullo schermo.
setTarget:- Modifica la latitudine e la longitudine della fotocamera, preservando tutte le altre proprietà.
setTarget:zoom:- Modifica la latitudine, la longitudine e lo zoom della videocamera, mantenendo tutte le altre proprietà.
setCamera:- Imposta un nuovo
GMSCameraPosition. scrollByX:Y:- Modifica la latitudine e la longitudine della videocamera per spostare la mappa del numero di punti specificato. Un valore x positivo fa sì che la fotocamera si sposti verso destra, in modo che la mappa sembri essersi spostata verso sinistra. Un valore y positivo fa spostare la fotocamera verso il basso, in modo che la mappa sembri essersi spostata verso l'alto. Lo scorrimento è relativo alla direzione corrente della videocamera. Ad esempio, se la fotocamera ha un orientamento di 90 gradi, l'est è "su".
fitBounds:- Trasforma la fotocamera per centrare i limiti specificati sullo schermo al livello di zoom più alto possibile. Applica un padding predefinito ai limiti di 64 punti.
fitBounds:withPadding:- Trasforma la fotocamera per centrare i limiti specificati sullo schermo al livello di zoom più alto possibile. Utilizza questo metodo per specificare lo stesso padding, in punti, per tutti i lati del riquadro di delimitazione.
fitBounds:withEdgeInsets:- Trasforma la fotocamera per centrare i limiti specificati sullo schermo al livello di zoom più alto possibile. Con
UIEdgeInsets, puoi specificare il padding per ogni lato del riquadro di delimitazione in modo indipendente.
Utilizza GMSMapView per modificare una singola proprietà
GMSMapView
fornisce diversi metodi che ti consentono di spostare la videocamera senza l'utilizzo di un oggetto
GMSCameraPosition o GMSCameraUpdate. Con questi metodi, ad esempio animateToLocation: o animateToZoom:, puoi animare una modifica a una singola proprietà della videocamera.
Ad esempio, utilizza il metodo toViewingAngle: per animare una modifica dell'inclinazione della videocamera.
Swift
mapView.animate(toViewingAngle: 45)
Objective-C
[mapView animateToViewingAngle:45];
Imposta target (località)
La località determina il centro della mappa. Le località sono specificate da latitudine e longitudine e rappresentate in modo programmatico da un oggetto CLLocationCoordinate2D, creato con CLLocationCoordinate2DMake.
Utilizza GMSCameraPosition per modificare la posizione. In questo esempio, la mappa si aggancia alla nuova posizione.
Swift
let target = CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208) mapView.camera = GMSCameraPosition(target: target, zoom: 6)
Objective-C
CLLocationCoordinate2D target = CLLocationCoordinate2DMake(-33.868, 151.208); mapView.camera = [GMSCameraPosition cameraWithTarget:target zoom:6];
Per animare la modifica e spostare la mappa nella nuova posizione, puoi utilizzare il metodo animateToCameraPosition: anziché impostare la proprietà camera. In alternativa, utilizza il metodo animateToLocation: su GMSMapView.
Swift
mapView.animate(toLocation: CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208))
Objective-C
[mapView animateToLocation:CLLocationCoordinate2DMake(-33.868, 151.208)];
Puoi anche creare un oggetto GMSCameraUpdate per spostare la videocamera. Utilizza il suo metodo integrato, scrollByX:Y:, per specificare il numero di punti di cui scorrere la videocamera nelle direzioni X e Y. In questo esempio, scorri la videocamera di 200 punti a destra e di 100 punti verso il basso:
Swift
// Move the camera 200 points to the right, and 100 points downwards let downwards = GMSCameraUpdate.scrollBy(x: 200, y: 100) mapView.animate(with: downwards)
Objective-C
// Move the camera 200 points to the right, and 100 points downwards GMSCameraUpdate *downwards = [GMSCameraUpdate scrollByX:200.0 Y:100.0]; [mapView animateWithCameraUpdate:downwards];
Imposta l'orientamento
La direzione è la direzione della bussola, misurata in gradi rispetto al nord geografico, per il bordo superiore della mappa. Ad esempio, un orientamento di 90 gradi genera una mappa in cui il bordo superiore punta verso est.
Imposta l'orientamento in modo programmatico con GMSCameraPosition o GMSCameraUpdate
o con il metodo animateToBearing: di GMSMapView.
Swift
mapView.animate(toBearing: 0)
Objective-C
[mapView animateToBearing:0];
Imposta l'inclinazione (angolo di visione)
L'angolo di visualizzazione è la posizione della fotocamera su un arco tra la posizione centrale della mappa e la superficie della Terra, misurata in gradi dal nadir (la direzione che punta direttamente sotto la fotocamera). Quando modifichi l'angolo di visualizzazione, la mappa viene visualizzata in prospettiva, con gli elementi tra la fotocamera e la posizione della mappa che appaiono proporzionalmente più grandi e gli elementi oltre la posizione della mappa che appaiono proporzionalmente più piccoli, creando un effetto tridimensionale.
L'angolo di visualizzazione può variare da 0 (rivolto verso il basso sulla mappa) fino a un massimo che dipende dal livello di zoom. Per il livello di zoom 16 o superiore, l'angolo massimo è di 65 gradi. Per il livello di zoom 10 o inferiore, l'angolo massimo è di 30 gradi.
Imposta l'angolo di visualizzazione in modo programmatico utilizzando GMSCameraPosition o GMSCameraUpdate o con il metodo animateToViewingAngle: di GMSMapView.
Swift
mapView.animate(toViewingAngle: 45)
Objective-C
[mapView animateToViewingAngle:45];
Imposta lo zoom
Il livello di zoom della fotocamera determina la scala della mappa. A livelli di zoom più elevati, puoi visualizzare più dettagli sullo schermo, mentre a livelli di zoom più bassi puoi visualizzare una parte più ampia del mondo.
Imposta lo zoom in modo programmatico con GMSCameraPosition o GMSCameraUpdate o con il metodo animateToZoom: di GMSMapView.
Swift
mapView.animate(toZoom: 12)
Objective-C
[mapView animateToZoom:12];
L'esempio seguente utilizza il metodo zoomIn: per creare un oggetto GMSCameraUpdate per animare uno zoom avanti di un livello rispetto al livello corrente.
Swift
// Zoom in one zoom level let zoomCamera = GMSCameraUpdate.zoomIn() mapView.animate(with: zoomCamera)
Objective-C
// Zoom in one zoom level GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn]; [mapView animateWithCameraUpdate:zoomCamera];
Definisci dei limiti
Per spostare la videocamera in modo che un'intera area di interesse sia visibile al livello di zoom più elevato possibile, imposta i confini per la visuale della videocamera. Ad esempio, se vuoi visualizzare tutte le stazioni di servizio entro cinque miglia dalla posizione corrente dell'utente, sposta la fotocamera in modo che siano tutte visibili sullo schermo:
- Calcola il
GMSCoordinateBoundsche vuoi che sia visibile sullo schermo. - Utilizza il metodo
cameraForBounds:insets:diGMSMapViewper restituire un nuovoGMSCameraPosition.
Imposta questi limiti in modo che l'oggetto GMSCoordinateBounds specificato rientri interamente nelle dimensioni della mappa corrente. Tieni presente che questo metodo imposta l'inclinazione e l'orientamento della mappa su 0.
L'esempio seguente mostra come modificare la fotocamera in modo che le città di Vancouver e Calgary vengano visualizzate entrambe nella stessa visualizzazione.
Swift
let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11) let calgary = CLLocationCoordinate2D(latitude: 51.05,longitude: -114.05) let bounds = GMSCoordinateBounds(coordinate: vancouver, coordinate: calgary) let camera = mapView.camera(for: bounds, insets: UIEdgeInsets())! mapView.camera = camera
Objective-C
CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11); CLLocationCoordinate2D calgary = CLLocationCoordinate2DMake(51.05, -114.05); GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithCoordinate:vancouver coordinate:calgary]; GMSCameraPosition *camera = [mapView cameraForBounds:bounds insets:UIEdgeInsetsZero]; mapView.camera = camera;
Limita la panoramica dell'utente a un'area specifica
Questi scenari impostano i limiti della mappa, ma l'utente può scorrere o spostarsi al di fuori di questi limiti. In alternativa, puoi limitare i limiti del centro delle coordinate del punto focale della mappa (il target della fotocamera) in modo che gli utenti possano scorrere e fare una panoramica solo all'interno di questi limiti.
Ad esempio, un'app di vendita al dettaglio per un centro commerciale o un aeroporto potrebbe voler limitare la mappa a limiti specifici, consentendo agli utenti di scorrere e spostarsi all'interno di questi limiti.
Per limitare la panoramica a limiti specifici, imposta la proprietà cameraTargetBounds di GMSMapView su un oggetto GMSCoordinateBounds che definisce i limiti richiesti.
Per rimuovere la limitazione in un secondo momento, imposta cameraTargetBounds su nil.
Swift
mapView.cameraTargetBounds = bounds
Objective-C
mapView.cameraTargetBounds = bounds;
Il seguente diagramma illustra uno scenario in cui il target della videocamera è limitato a un'area leggermente più grande dell'area visibile. L'utente può scorrere e spostarsi, a condizione che il target della fotocamera rimanga all'interno dell'area delimitata. La croce rappresenta il target della videocamera:

La mappa riempie sempre l'area visibile, anche se ciò comporta la visualizzazione di aree esterne ai limiti definiti. Ad esempio, se posizioni il target della videocamera in un angolo dell'area delimitata, l'area oltre l'angolo è visibile nell'area visibile, ma gli utenti non possono scorrere ulteriormente in quell'area. Il seguente diagramma illustra questo scenario. La croce rappresenta il target della videocamera:

Nel seguente diagramma, il target della videocamera ha limiti molto ristretti, offrendo all'utente pochissime opportunità di scorrere o eseguire la panoramica della mappa. La croce rappresenta il target della videocamera:

Imposta uno zoom minimo o massimo
Le costanti globali kGMSMinZoomLevel e kGMSMaxZoomLevel definiscono i valori di zoom minimo o massimo. Per impostazione predefinita, le proprietà minZoom e maxZoom di GMSMapView sono impostate su queste costanti.
Per limitare l'intervallo di livelli di zoom disponibili per la mappa, imposta un livello di zoom minimo e massimo. Il codice seguente limita il livello di zoom tra 10 e 15.
Swift
let camera = GMSCameraPosition( latitude: 41.887, longitude: -87.622, zoom: 12 ) let options = GMSMapViewOptions() options.camera = camera let mapView = GMSMapView(options: options) mapView.setMinZoom(10, maxZoom: 15)
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.887 longitude:-87.622 zoom:12]; GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = camera; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; [mapView setMinZoom:10 maxZoom:15];
Devi impostare l'intervallo di zoom con il metodo setMinZoom:maxZoom:; tuttavia, puoi leggere i valori correnti utilizzando le proprietà minZoom e maxZoom. Questo approccio è utile quando si limita solo uno dei valori. Il seguente codice modifica solo il livello di zoom minimo.
Swift
mapView.setMinZoom(12, maxZoom: mapView.maxZoom)
Objective-C
[mapView setMinZoom:12 maxZoom:mapView.maxZoom];
Se, dopo aver aggiornato lo zoom minimo e massimo, il livello di zoom della videocamera è impostato su un valore al di fuori del nuovo intervallo, lo zoom corrente si aggiorna automaticamente per visualizzare il valore valido più vicino. Ad esempio, nel codice seguente, lo zoom originale è definito come 4. Quando l'intervallo di zoom viene successivamente impostato su 10-15, lo zoom corrente viene aggiornato a 10.
Swift
// Sets the zoom level to 4. let camera2 = GMSCameraPosition( latitude: 41.887, longitude: -87.622, zoom: 4 ) let options2 = GMSMapViewOptions() options2.camera = camera2 let mapView2 = GMSMapView(options: options2) // The current zoom, 4, is outside of the range. The zoom will change to 10. mapView2.setMinZoom(10, maxZoom: 15)
Objective-C
// Sets the zoom level to 4. GMSCameraPosition *camera2 = [GMSCameraPosition cameraWithLatitude:41.887 longitude:-87.622 zoom:4]; GMSMapViewOptions *options2 = [[GMSMapViewOptions alloc] init]; options2.camera = camera2; GMSMapView *mapView2 = [[GMSMapView alloc] initWithOptions:options2]; // The current zoom, 4, is outside of the range. The zoom will change to 10. [mapView setMinZoom:10 maxZoom:15];