Con Maps SDK for iOS, puoi cambiare il punto di vista dell'utente della mappa cambiando l'inquadratura 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 eseguire una panoramica della mappa o cambiarne la prospettiva con una latenza minima.
Le modifiche alla fotocamera non cambiano gli indicatori, le polilinee o altri elementi grafici che hai aggiunto, anche se potresti voler modificare queste aggiunte per adattarle meglio alla nuova vista.
La visualizzazione della mappa
Maps SDK for iOS utilizza la proiezione di merchandising per rappresentare la superficie del mondo (una sfera) sullo schermo del dispositivo (un piano piatto).
La posizione della fotocamera
La visualizzazione mappa è modellata come una fotocamera che guarda verso il basso su un piano piatto. La posizione della fotocamera (e quindi del rendering della mappa) è specificata dalle seguenti proprietà: target (latitudine/longitudine), bearing, 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 limitati al valore più vicino all'interno dell'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 superiori o inferiori a questo intervallo verranno aggregati in modo che rientrino nell'intervallo (-180, 180). Ad esempio, 480, 840 e 1200 verranno tutti aggregati a 120 gradi.Orientamento (orientamento)
L'orientamento della fotocamera specifica la direzione della bussola, misurata in gradi dal nord vero, 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 vero.
Un rilevamento pari a 0 indica che la parte superiore della mappa indica il nord vero. Un valore di rilevamento 90 indica i punti superiori dei punti della mappa rivolti a est (90 gradi su un compasso). Il valore 180 indica la parte superiore dei punti della mappa a sud.
L'API di Google Maps ti consente di modificare l'orientamento di una mappa. Ad esempio, chi guida un'auto spesso gira una mappa stradale per allinearla alla direzione di marcia, mentre gli escursionisti che utilizzano una mappa e una bussola di solito la orientano in modo che una linea verticale sia rivolta a nord.
Inclinazione (angolo di visualizzazione)
L'inclinazione definisce la posizione della fotocamera su un arco direttamente rispetto alla posizione centrale della mappa, misurata in gradi dal nadir (la direzione che punta direttamente sotto la fotocamera). Il valore 0 corrisponde a una videocamera puntata in basso. Valori superiori a 0 corrispondono a una fotocamera inclinata verso l'orizzonte del numero di gradi specificato. Quando modifichi l'angolo di visualizzazione, la mappa viene mostrata 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 aspetto: la posizione 1 è la posizione della fotocamera, mentre la posizione 2 è la posizione corrente sulla mappa. La mappa risultante è visualizzata sotto di essa.
Nelle immagini di seguito, l'angolo di visione è di 45 gradi. Nota che la videocamera si sposta a metà lungo un arco tra l'alto (0 gradi) e il suolo (90 gradi) in posizione 3. La fotocamera punta ancora verso il 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 sono stati visualizzati altri elementi. Se aumenti l'angolo di oltre 45 gradi, gli elementi tra la fotocamera e la posizione sulla mappa appaiono proporzionalmente più grandi, mentre quelli oltre la posizione sulla mappa appaiono proporzionalmente più piccoli, producendo un effetto tridimensionale.
Zoom
Il livello di zoom della fotocamera determina la scala della mappa. A livelli di zoom più grandi è possibile visualizzare maggiori dettagli sullo schermo, mentre a livelli di zoom ridotti è possibile vedere più dettagli. A livello di zoom 0, la scala della mappa fa sì che il mondo intero abbia una larghezza di circa 256 punti.
Aumentando il livello di zoom di 1, la larghezza della superficie dello schermo viene raddoppiata. Quindi, a livello di zoom N, la larghezza del mondo è di circa 256 * 2N punti. Ad esempio, a livello di zoom 2, il mondo intero ha un'ampiezza 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 non compreso nell'intervallo verrà convertito nel successivo valore valido più vicino, che può essere il livello minimo o massimo di zoom. L'elenco seguente mostra 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 insieme a cuscinetto, 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
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 di 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 cambiare la posizione della videocamera in modo programmatico per impostarne
la posizione, l'orientamento, l'inclinazione e lo zoom. Sebbene GMSMapView
offra diversi metodi
per cambiare la posizione della fotocamera, in genere utilizzi GMSCameraPosition
o
GMSCameraUpdate
:
GMSCameraPosition
contiene proprietà e metodi che utilizzi per modificare ogni parametro di posizione della fotocamera: target, orientamento, inclinazione e zoom.GMSCameraUpdate
ti consente di modificare l'obiettivo, l'orientamento, l'inclinazione e lo zoom. Inoltre, offre altri pratici metodi per supportare lo scorrimento, lo zoom avanzato, la centratura della videocamera entro i confini predefiniti e altro ancora.
Quando sposti la fotocamera, puoi scegliere di "agganciare" la videocamera alla nuova posizione, ovvero non ci sono animazioni, oppure di animare lo spostamento. Ad esempio, se anima una modifica alla posizione target della videocamera, l'animazione viene panoramica dalla posizione precedente a quella nuova.
L'animazione si interpola tra gli attributi della videocamera correnti e i nuovi attributi della videocamera. Puoi controllare la durata dell'animazione utilizzando l'animazione principale.
Formato GMSCameraPosition
Per cambiare la videocamera con
GMSCameraPosition
,
crea un nuovo oggetto o copia un oggetto esistente e poi impostalo sull'oggetto
GMSMapView
. Usa l'oggetto GMSCameraPosition
per agganciare la fotocamera
alla nuova posizione, con o senza animazione.
Utilizza un oggetto GMSCameraPosition
per configurare qualsiasi proprietà della videocamera come latitudine, longitudine, zoom, orientamento e angolo di visione. Potrai quindi utilizzare quell'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
di cui vuoi impostare il valore predefinito.
Per animare lo spostamento, usa il metodo animateToCameraPosition:
anziché
impostare la proprietà camera
.
Formato GMSCameraUpdate
GMSCameraUpdate
ti consente di aggiornare la posizione della fotocamera e di scegliere se agganciarla o animarla
alla nuova posizione. Il vantaggio di GMSCameraUpdate
è la comodità. Puoi
utilizzare GMSCameraPosition
per svolgere le stesse attività di GMSCameraUpdate
, ma
GMSCameraUpdate
offre 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 attuale, quindi creare un oggetto GMSCameraPosition
in cui imposti lo zoom su un valore superiore a quello attuale.
In alternativa, crea un oggetto GMSCameraUpdate
con il metodo zoomIn:
.
Quindi aggiorna la fotocamera passando l'oggetto GMSCameraUpdate
al
metodo GMSMapView
animateWithCameraUpdate:
.
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 moveCamera:
GMSMapView
per agganciare la fotocamera alla nuova posizione.
Nell'esempio successivo, utilizzerai GMSCameraUpdate
per animare un movimento della videocamera
al centro di 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];
Costruisci un oggetto GMSCameraUpdate
Costruisci 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 impostando il 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 videocamera, mantenendo tutte le altre proprietà.
setTarget:zoom:
- Modifica la latitudine, la longitudine e lo zoom della fotocamera, mantenendo tutte le altre proprietà.
setCamera:
- Imposta un nuovo
GMSCameraPosition
. scrollByX:Y:
- Modifica la latitudine e la longitudine della fotocamera per spostare la mappa in base al numero di punti specificato. Un valore x positivo fa sì che la fotocamera si sposti verso destra, in modo che la mappa sembri essere stata spostata a sinistra. Un valore y positivo fa sì che la fotocamera si sposti verso il basso, mostrando così la mappa che sembri spostata in alto. Lo scorrimento è relativo all'orientamento attuale della fotocamera. Ad esempio, se la videocamera ha un rilevamento di 90 gradi, l'orientamento est è "in alto".
fitBounds:
- Trasforma la fotocamera per centrare i limiti specificati sullo schermo al massimo livello di zoom possibile. Applica una spaziatura interna predefinita nei 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 in modo indipendente la spaziatura interna per ogni lato del riquadro di delimitazione.
Utilizza GMSMapView
per modificare una singola proprietà
GMSMapView
offre diversi metodi che ti permettono di 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, usa il metodo toViewingAngle:
per animare una modifica all'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 sulla 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 in cui far scorrere la fotocamera nelle direzioni X e Y. In questo esempio, scorri la fotocamera di 200
punti a destra e di 100 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 orientamento (orientamento)
L'orientamento è la direzione della bussola, misurata in gradi dal nord vero, per il bordo superiore della mappa. Ad esempio, un rilevamento di 90 gradi genera una mappa in cui i punti del bordo superiore puntano a 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 visualizzazione)
L'angolo di visione è la posizione della videocamera su un arco compreso tra la posizione centrale della mappa e la superficie della Terra, misurata in gradi dal nadir (la direzione che punta direttamente sotto la videocamera). Quando modifichi l'angolo di visualizzazione, la mappa viene mostrata in prospettiva, con gli elementi tra la fotocamera e la posizione della mappa proporzionalmente più grandi e quelli oltre la posizione della mappa che appaiono proporzionalmente più piccoli, generando un effetto tridimensionale.
L'angolo di visione può variare da 0 (che punta verso il basso verso la mappa) e fino a un livello massimo dipendente dal livello di zoom. Per un livello di zoom 16 o superiore, l'angolo massimo è di 65 gradi. Per un livello di zoom 10 o inferiore, l'angolo massimo è di 30 gradi.
Imposta l'angolo di visione 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 più grandi puoi vedere più dettagli sullo schermo, mentre a livelli di zoom più piccoli puoi vedere di più sul mondo.
Imposta lo zoom in modo programmatico con GMSCameraPosition
o GMSCameraUpdate
oppure
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 in 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];
Stabilisci dei limiti
Per spostare la videocamera in modo che un'intera area di interesse sia visibile al massimo livello di zoom possibile, imposta dei limiti per l'area inquadrata. Ad esempio, se vuoi visualizzare tutte le stazioni di servizio entro cinque miglia dalla posizione attuale dell'utente, sposta la fotocamera in modo che siano tutte visibili sullo schermo:
- Calcola il valore di
GMSCoordinateBounds
che vuoi essere visibile sullo schermo. - Utilizza il metodo
cameraForBounds:insets:
diGMSMapView
per restituire un nuovoGMSCameraPosition
.
L'impostazione di questi limiti garantisce che il valore GMSCoordinateBounds
specificato rientri completamente
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 nella stessa vista.
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ò scorrere o eseguire la panoramica al di fuori di questi limiti. Piuttosto, potresti voler vincolare i limiti centrali delle coordinate del punto focale della mappa (l'obiettivo della fotocamera) in modo che gli utenti possano scorrere ed eseguire la panoramica solo entro questi limiti.
Ad esempio, un'app di vendita al dettaglio di un centro commerciale o di un aeroporto potrebbe voler vincolare la mappa a limiti specifici, in modo che gli utenti possano scorrere ed eseguire la panoramica all'interno di questi limiti.
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 la videocamera target è limitata a un'area leggermente più grande dell'area visibile. L'utente può scorrere e fare una panoramica, a condizione che l'obiettivo della videocamera rimanga all'interno dell'area delimitata. La croce rappresenta il target della fotocamera:
La mappa riempie sempre l'area visibile, anche se quest'ultima mostra aree 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 ulteriormente in quell'area. Il seguente diagramma illustra questo scenario. La croce rappresenta il target della fotocamera:
Nel diagramma seguente, l'obiettivo della videocamera ha limiti molto ristretti, offrendo all'utente pochissime opportunità di scorrere o panoramica la mappa. La croce rappresenta il target della fotocamera:
Impostare lo zoom minimo o massimo
Le costanti globali kGMSMinZoomLevel
e kGMSMaxZoomLevel
definiscono i valori minimi o massimi di zoom. 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 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 per limitare solo uno dei valori. Il seguente codice modifica solo il livello minimo di zoom.
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 fotocamera viene impostato su un valore non compreso nel nuovo intervallo, lo zoom corrente viene aggiornato automaticamente mostrando il valore valido più vicino. Ad esempio, nel codice che segue, lo zoom originale è definito come 4. Se l'intervallo di zoom viene 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 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];