Con Maps SDK for iOS, puoi cambiare il punto di vista dell'utente della mappa modificando 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 contesto. A qualsiasi livello di zoom, gli utenti possono eseguire la panoramica della mappa o cambiarne la prospettiva con una latenza molto bassa.
Le modifiche alla fotocamera non cambiano gli indicatori, le polilinee o gli altri elementi grafici che hai aggiunto, anche se potresti voler modificare queste aggiunte per adattarle meglio alla nuova vista.
Visualizzazione della mappa
Maps SDK per iOS utilizza la proiezione del merchandising per rappresentare la superficie del mondo (una sfera) sullo schermo del tuo dispositivo (piano piatta).
La posizione della fotocamera
La visualizzazione mappa è modellata come una fotocamera che guarda verso il basso su un aereo piatto. La posizione della videocamera (e quindi il rendering della mappa) viene specificata dalle seguenti proprietà: target (posizione di latitudine/longitudine), supporto, inclinazione e zoom.
Target (località)
L'obiettivo 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 bloccati al valore più vicino all'interno di questo intervallo. Ad esempio, se specifichi una latitudine pari a 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 aggregati in modo da rientrare nell'intervallo (-180, 180). Ad esempio, 480, 840 e 1200 saranno tutti avvolti a 120 gradi.Orientamento (orientamento)
L'orientamento della fotocamera specifica la direzione della bussola, misurata in gradi dal vero nord, corrispondente al bordo superiore della mappa. Se tracci una linea verticale dal centro della mappa al bordo superiore della mappa, l'orientamento corrisponde all'orientamento della fotocamera (misurato in gradi) rispetto al nord reale.
L'orientamento 0 indica che la parte superiore della mappa punta al vero nord. Un valore di rilevamento 90 indica la parte superiore dei punti della mappa verso est (90 gradi su una bussola). Il valore 180 indica la parte superiore dei punti della mappa verso sud.
L'API di Google Maps consente di modificare l'orientamento di una mappa. Ad esempio, chi guida un'auto spesso trasforma 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 visualizzazione)
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). Il valore 0 corrisponde a una fotocamera puntata in 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 appare in prospettiva, con gli elementi lontani che appaiono più piccoli e gli elementi vicini che appaiono più grandi. Le seguenti illustrazioni lo dimostrano.
Nelle immagini seguenti, l'angolo di visualizzazione è di 0 gradi. La prima immagine mostra uno schematico di questa operazione: la posizione 1 è la posizione della fotocamera, mentre la posizione 2 è la posizione corrente della mappa. La mappa risultante viene visualizzata sotto di essa.
Nelle immagini seguenti, l'angolo di visione è di 45 gradi. Nota che la fotocamera si sposta a metà di un arco tra la superficie dritta (0°) e il suolo (90°) nella posizione 3. La fotocamera continua a puntare nel punto centrale della mappa, ma l'area rappresentata dalla linea in posizione 4 è ora visibile.
La mappa in questo screenshot è ancora centrata sullo stesso punto della mappa originale, ma nella parte superiore della mappa sono stati visualizzati altri elementi. Man mano che aumenti l'angolazione oltre i 45 gradi, gli elementi tra la fotocamera e la posizione sulla mappa appaiono proporzionalmente più grandi, mentre gli elementi oltre la posizione sulla mappa appariranno proporzionalmente più piccoli, producendo un effetto tridimensionale.
Zoom
Il livello di zoom della fotocamera determina la scala della mappa. A livelli di zoom maggiori si possono vedere più dettagli sullo schermo, mentre a livelli di zoom più piccoli si può vedere più parti del mondo sullo schermo. A livello di zoom 0, la scala della mappa è tale che l'intero mondo abbia una larghezza di circa 256 punti.
Se aumenti il livello di zoom di 1, la larghezza del mondo sullo schermo raddoppia. Di conseguenza, a livello di zoom N, la larghezza del mondo è di circa 256 * 2N punti. Ad esempio, a livello di zoom 2, l'intero mondo ha una larghezza di circa 1024 punti.
Il livello di zoom non deve essere un numero intero. L'intervallo di livelli di zoom consentiti dalla mappa dipende da una serie di fattori, tra cui il target, il tipo di mappa e le dimensioni dello schermo. Qualsiasi numero al di fuori dell'intervallo verrà convertito al valore valido successivo più vicino, che può essere il livello di zoom minimo o il livello di zoom massimo. Nell'elenco che segue viene mostrato il livello approssimativo di dettaglio previsto per ogni livello di zoom:
- 1: Mondo
- 5: massa continentale/continente
- 10: Città
- 15: Strade
- 20: Edifici
Imposta la posizione iniziale della fotocamera
Imposta la posizione iniziale della fotocamera utilizzando l'oggetto GMSCameraPosition
, che ti consente di impostare latitudine e longitudine del target, oltre a orientamento, inclinazione e zoom.
Per impostare la posizione iniziale della fotocamera, crea un oggetto GMSMapViewOptions
e imposta la proprietà camera
su GMSCameraPosition
. Quindi passa le opzioni al costruttore di pratiche
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
init predefinito UIView
. In questo caso, la posizione della fotocamera inizia dalla posizione 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];
Cambiare la posizione della fotocamera
Puoi modificare in modo programmatico la posizione della fotocamera per impostare
posizione, posizione, inclinazione e zoom. Sebbene GMSMapView
offra diversi metodi che
puoi usare per cambiare la posizione della fotocamera, in genere utilizzi GMSCameraPosition
o
GMSCameraUpdate
:
GMSCameraPosition
contiene le proprietà e i metodi utilizzati per modificare ogni parametro di posizione della videocamera: target, orientamento, inclinazione e zoom.GMSCameraUpdate
consente di modificare il target, l'orientamento, l'inclinazione e lo zoom e offre anche altri metodi pratici per supportare lo scorrimento, lo zoom avanzato, il centramento della videocamera entro i confini predefiniti e altro ancora.
Quando sposti la videocamera, puoi scegliere di "agganciarla" alla nuova posizione, nel senso che non ci sono animazioni, oppure di animare lo spostamento. Ad esempio, se anima una modifica alla posizione di destinazione della videocamera, l'animazione esegue una panoramica dalla posizione precedente a quella nuova.
L'animazione interpola tra gli attributi correnti della videocamera e i nuovi attributi della videocamera. Puoi controllare la durata dell'animazione utilizzando Animazione principale.
Utilizza GMSCameraPosition
Per cambiare la fotocamera con
GMSCameraPosition
,
crea un nuovo oggetto o copia un oggetto esistente e poi 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 videocamera, come
latitudine, longitudine, zoom, orientamento e angolo di visualizzazione. Potrai quindi utilizzare questo 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
ti consente di aggiornare la posizione della fotocamera e di scegliere se agganciare o animare
la nuova posizione. Il vantaggio di GMSCameraUpdate
è la comodità. Puoi
utilizzare GMSCameraPosition
per eseguire le stesse attività di GMSCameraUpdate
, ma
GMSCameraUpdate
fornisce altri metodi di supporto per semplificare
la manipolazione della videocamera.
Ad esempio, per utilizzare GMSCameraPosition
per incrementare il livello di zoom corrente, devi prima determinare il livello di zoom attuale, quindi creare un
oggetto GMSCameraPosition
in cui impostare lo zoom su un valore superiore
uno a quello attuale.
In alternativa, crea un oggetto GMSCameraUpdate
con il metodo zoomIn:
.
Quindi aggiorna la fotocamera 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];
Usa invece il metodo moveCamera:
GMSMapView
per agganciare la fotocamera alla nuova posizione.
Nel prossimo esempio, utilizzerai GMSCameraUpdate
per animare una mossa della fotocamera
al fine di 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 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 longitudine della videocamera, conservando tutte le altre proprietà.
setTarget:zoom:
- Modifica la latitudine, la longitudine e lo zoom della videocamera, conservando tutte le altre proprietà.
setCamera:
- Imposta un nuovo
GMSCameraPosition
. scrollByX:Y:
- Modifica la latitudine e la longitudine della videocamera per spostare la mappa in base al numero di punti specificato. Un valore x positivo fa sì che la fotocamera si sposti verso destra, mostrando che la mappa si sia spostata a sinistra. Se il valore y è positivo, la fotocamera si sposta verso il basso, in modo che la mappa si sia spostata verso l'alto. Lo scorrimento è relativo all'orientamento attuale della videocamera. Ad esempio, se la fotocamera ha un rilevamento di 90 gradi, il senso est è "su".
fitBounds:
- Trasforma la fotocamera per centrare i limiti specificati sullo schermo al massimo livello di zoom possibile. Applica una spaziatura interna predefinita ai limiti di 64 punti.
fitBounds:withPadding:
- Trasforma la fotocamera per centrare i limiti specificati sullo schermo al massimo livello di zoom possibile. Utilizza questo metodo per specificare la stessa spaziatura interna, in punti, per tutti i lati del riquadro di delimitazione.
fitBounds:withEdgeInsets:
- Trasforma la fotocamera per centrare i limiti specificati sullo schermo al massimo livello di zoom possibile. Con
UIEdgeInsets
, puoi specificare la spaziatura interna per ogni lato del riquadro di delimitazione in modo indipendente.
Utilizza GMSMapView
per modificare una singola proprietà
GMSMapView
offre diversi metodi per spostare la videocamera senza utilizzare un oggetto GMSCameraPosition
o GMSCameraUpdate
. Con questi metodi, ad esempio animateToLocation:
o animateToZoom:
, puoi animare una modifica a una singola proprietà della fotocamera.
Ad esempio, utilizza il metodo toViewingAngle:
per animare una modifica dell'inclinazione della fotocamera.
Swift
mapView.animate(toViewingAngle: 45)
Objective-C
[mapView animateToViewingAngle:45];
Imposta target (località)
La posizione determina il centro della mappa. Le località sono specificate da
latitudine e longitudine e rappresentate in modo programmatico da un
CLLocationCoordinate2D
, creato con CLLocationCoordinate2DMake
.
Usa GMSCameraPosition
per cambiare la località. 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 fotocamera. Utilizza il metodo integrato scrollByX:Y:
per specificare il numero di punti necessari per far scorrere la videocamera nelle direzioni X e Y. In questo esempio, fai scorrere la fotocamera
di 200 punti verso destra e 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 (orientamento)
La direzione è la direzione della bussola, misurata in gradi dal nord vero, per il bordo superiore della mappa. Ad esempio, un'orientamento di 90 gradi restituisce una mappa in cui il bordo superiore punta verso est.
Imposta l'orientamento in modo programmatico con GMSCameraPosition
o GMSCameraUpdate
oppure con il metodo animateToBearing:
di GMSMapView
.
Swift
mapView.animate(toBearing: 0)
Objective-C
[mapView animateToBearing:0];
Imposta inclinazione (angolo di visualizzazione)
L'angolo di visione è la posizione della videocamera su un arco che si trova direttamente sopra 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 mostrata 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 appariranno proporzionalmente più piccoli, producendo un effetto tridimensionale.
L'angolo di visualizzazione può essere compreso tra 0 (punta verso il basso verso la mappa) e fino a un valore massimo dipendente dal livello di zoom. Per il livello di zoom 16 o superiore, l'angolo massimo è 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
oppure con il metodo animateToViewingAngle:
di GMSMapView
.
Swift
mapView.animate(toViewingAngle: 45)
Objective-C
[mapView animateToViewingAngle:45];
Imposta zoom
Il livello di zoom della fotocamera determina la scala della mappa. A livelli di zoom maggiori puoi vedere più dettagli sullo schermo, mentre a livelli di zoom minori puoi vedere più parti 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];
Delimita
Per spostare la videocamera in modo che un'intera area di interesse sia visibile al massimo livello di zoom possibile, imposta i limiti per la visualizzazione della videocamera. Ad esempio, se vuoi visualizzare tutte le stazioni di servizio nel raggio di cinque chilometri dalla posizione attuale dell'utente, sposta la videocamera in modo che siano tutte visibili sullo schermo:
- Calcola il valore
GMSCoordinateBounds
che vuoi visualizzare sullo schermo. - Utilizza il metodo
cameraForBounds:insets:
diGMSMapView
per restituire un nuovoGMSCameraPosition
.
L'impostazione di questi limiti garantisce che l'elemento 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 cambiare la videocamera 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 una determinata area
Questi scenari impostano i limiti della mappa, ma l'utente può quindi scorrere o esplorare al di fuori di questi limiti. Puoi invece limitare i limiti centrali delle coordinate del punto focale della mappa (il target della fotocamera), in modo che gli utenti possano solo scorrere e fare una panoramica all'interno di questi limiti.
Ad esempio, un'app di retail per un centro commerciale o un aeroporto potrebbe decidere di limitare la mappa a limiti specifici, consentendo agli utenti di scorrere ed esplorare l'area.
Per limitare il panning 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 zero.
Swift
mapView.cameraTargetBounds = bounds
Objective-C
mapView.cameraTargetBounds = bounds;
Il seguente diagramma illustra uno scenario in cui il target della videocamera è vincolato a un'area leggermente più grande dell'area visibile. L'utente può scorrere e eseguire la panoramica, a condizione che il target della videocamera rimanga all'interno dell'area delimitata. La croce rappresenta il target della videocamera:
La mappa riempie sempre l'area visibile, anche se in questo modo l'area visibile mostra aree che si trovano al di fuori dei 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 oltre l'area. Il seguente diagramma illustra questo scenario. La croce rappresenta il target della fotocamera:
Nel diagramma seguente, il target della videocamera ha limiti molto limitati, offrendo all'utente poche opportunità di scorrere o eseguire la panoramica della mappa. La croce rappresenta l'obiettivo della fotocamera:
Impostare uno zoom minimo o massimo
Le costanti globali kGMSMinZoomLevel
e kGMSMaxZoomLevel
definiscono i valori di zoom minimi o massimi. 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 seguente codice limita il livello di zoom a un valore compreso tra 10 e 15.
Swift
let camera = GMSCameraPosition( latitude: 41.887, longitude: -87.622, zoom: 12 ) let mapView = GMSMapView(frame: .zero, camera: camera) mapView.setMinZoom(10, maxZoom: 15)
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.887 longitude:-87.622 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; [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 un solo valore. 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 viene 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 che segue, lo zoom originale è definito come 4. Quando l'intervallo di zoom viene successivamente impostato su 10-15, lo zoom attuale viene aggiornato a 10.
Swift
// Sets the zoom level to 4. let camera2 = GMSCameraPosition( latitude: 41.887, longitude: -87.622, zoom: 4 ) let mapView2 = GMSMapView(frame: .zero, camera: camera) // The current zoom, 4, is outside of the range. The zoom will change to 10. mapView.setMinZoom(10, maxZoom: 15)
Objective-C
// Sets the zoom level to 4. GMSCameraPosition *camera2 = [GMSCameraPosition cameraWithLatitude:41.887 longitude:-87.622 zoom:4]; GMSMapView *mapView2 = [GMSMapView mapWithFrame:CGRectZero camera:camera]; // The current zoom, 4, is outside of the range. The zoom will change to 10. [mapView setMinZoom:10 maxZoom:15];