Con Maps SDK for iOS, puoi modificare il punto di vista dell'utente sulla mappa modificando la fotocamera della mappa.
Con Maps SDK for iOS, gli utenti possono inclinare e ruotare il per adattare le mappe a un orientamento utile per il loro contesto. A qualsiasi zoom a livello di progetto, gli utenti possono eseguire la panoramica della mappa o cambiarne la prospettiva con una latenza molto poca.
Le modifiche alla fotocamera non modificano gli indicatori, le polilinee o gli altri elementi grafici aggiunte, anche se potresti volerle modificare per adattarle meglio nuova vista.
Visualizzazione della mappa
Maps SDK for iOS utilizza il Mercator proiezione per rappresentare la superficie del mondo (una sfera) sullo schermo del tuo dispositivo (una sfera aereo).
La posizione della fotocamera
La visualizzazione mappa è modellata come una fotocamera che guarda verso il basso su un aereo piatto. La posizione della fotocamera (e di conseguenza il rendering della mappa) viene specificato seguenti proprietà: target (posizione di latitudine/longitudine), cuscinetto, 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. Valori superiori o al di sotto di questo intervallo, verranno bloccati sul valore più vicino all'interno di questo intervallo. Ad esempio, se specifichi una latitudine pari a 100, il valore verrà impostato su 85. Longitudine varia da -180 a 180 gradi inclusi. Valori superiori o inferiori a questo verrà aggregato in modo tale che rientrino nell'intervallo (-180, 180). Per 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) al vero nord.
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). Un 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, qualcuno alla guida di un'auto spesso gira una cartina stradale per allinearla alla direzione di marcia, mentre gli escursionisti usano una mappa la bussola di solito orienta 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 che si estende direttamente al media, misurata in gradi dal nadir (direzione diretta sotto la videocamera). Il valore 0 corrisponde a una fotocamera puntata direttamente in basso. Valori superiori a 0 corrispondono a una fotocamera inclinata verso l'orizzonte di il numero di gradi specificato. Quando cambi l'angolo di visualizzazione, la mappa appare in prospettiva, con elementi lontani appare più piccolo e gli elementi vicini visualizzati più grandi. Le seguenti illustrazioni lo dimostrano.
Nelle immagini seguenti, l'angolo di visualizzazione è di 0 gradi. La prima immagine mostra schematico di tutto questo: La posizione 1 è la posizione della fotocamera, mentre la posizione 2 è la posizione corrente sulla mappa. La mappa risultante viene visualizzata sotto di essa.
Nelle immagini seguenti, l'angolo di visione è di 45 gradi. Nota che la videocamera si sposta a metà lungo un arco tra l'alto dritto (0 gradi) e il suolo (90 gradi), alla posizione 3. La fotocamera sta ancora puntando al 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à. Man mano che aumenta l'angolazione oltre 45 gradi, gli elementi tra la fotocamera e la mappa della posizione vengono visualizzati in proporzione più grande, mentre gli elementi oltre la posizione sulla mappa appaiono proporzionalmente più piccole, producendo un effetto tridimensionale.
Zoom
Il livello di zoom della fotocamera determina la scala della mappa. Con zoom maggiore a livelli più piccoli è possibile vedere più dettagli sullo schermo, mentre a livelli di zoom più piccoli sullo schermo si possono vedere più aree del mondo. A livello di zoom pari a 0, la scala della mappa è tale che il mondo intero una larghezza di circa 256 punti.
Se aumenti il livello di zoom di 1, la larghezza del mondo sullo schermo viene raddoppiata. Quindi, a livello di zoom N, la larghezza del mondo è approssimativamente 256 * 2N punti. Ad esempio, a livello di zoom 2, il mondo intero Larghezza 1024 punti.
Il livello di zoom non deve essere un numero intero. L'intervallo di zoom livelli consentiti dalla mappa dipendono da una serie di fattori, tra cui target, tipo di mappa e dimensioni dello schermo. Qualsiasi numero al di fuori dell'intervallo verrà convertito nel successivo valore valido più vicino, che può essere il livello di zoom minimo o livello di zoom massimo. Nell'elenco seguente viene mostrato il livello di dettaglio approssimativo che puoi aspettarti di vedere a 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
GMSCameraPosition
che ti consente di impostare latitudine e longitudine del target insieme a
orientamento, inclinazione e zoom.
Per impostare la posizione iniziale della fotocamera, crea un oggetto GMSMapViewOptions
e imposta
camera
a GMSCameraPosition
. Quindi passa le opzioni al
GMSMapView
costruttore di convenienza.
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 l'init UIView
predefinito
. In questo caso, la posizione della fotocamera inizia dalla posizione predefinita e
modificarlo 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 la posizione.
orientamento, inclinazione e zoom. Sebbene GMSMapView
offra diversi metodi per
che puoi utilizzare per modificare la posizione della fotocamera, in genere usi GMSCameraPosition
o
GMSCameraUpdate
:
GMSCameraPosition
contiene le proprietà e i metodi utilizzati per modificare la posizione della fotocamera parametro: target, orientamento, inclinazione e zoom.GMSCameraUpdate
consente di modificare target, orientamento, inclinazione e zoom e contiene anche pratici per supportare lo scorrimento, lo zoom avanzato, il centramento videocamera entro i confini predefiniti e altro ancora.
Quando sposti la fotocamera, puoi scegliere di "scattarla" la fotocamera al nuovo media, ovvero l'assenza di animazioni, o animare lo spostamento. Ad esempio, se animi una modifica alla posizione target della videocamera, l'animazione esegue la panoramica dalla posizione precedente a quella nuova.
L'animazione si interpola tra gli attributi correnti della videocamera e i nuovi. degli attributi fotocamera. Puoi controllare la durata dell'animazione utilizzando Principale Animazione.
Utilizza GMSCameraPosition
Per cambiare fotocamera con
GMSCameraPosition
,
crei un nuovo oggetto o ne copi uno esistente e lo imposti nella
GMSMapView
oggetto. Utilizza l'oggetto GMSCameraPosition
per agganciare la fotocamera
la nuova posizione con o senza animazione.
Utilizza un oggetto GMSCameraPosition
per configurare le proprietà della fotocamera come
latitudine, longitudine, zoom, orientamento e angolo di visualizzazione. Poi userai 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, usa il metodo animateToCameraPosition:
anziché
impostare la proprietà camera
.
Utilizza GMSCameraUpdate
GMSCameraUpdate
consente di aggiornare la posizione della fotocamera e di scegliere se agganciare o animare
quella nuova posizione. Il vantaggio di GMSCameraUpdate
è la comodità. Puoi
usa GMSCameraPosition
per eseguire le stesse attività di GMSCameraUpdate
,
GMSCameraUpdate
offre metodi di supporto aggiuntivi per semplificare la
manipolare la fotocamera.
Ad esempio, per utilizzare GMSCameraPosition
per aumentare il livello di zoom corrente,
determinare il livello di zoom corrente, quindi creare
Oggetto GMSCameraPosition
in cui imposti lo zoom su un valore maggiore di uno
lo zoom corrente.
In alternativa, crea un oggetto GMSCameraUpdate
con il metodo zoomIn:
.
Quindi aggiorna la videocamera passando l'oggetto GMSCameraUpdate
all'
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 il metodo moveCamera:
GMSMapView
per agganciare la fotocamera alla nuova posizione
.
Nel prossimo esempio, viene utilizzato GMSCameraUpdate
per animare una mossa della fotocamera
per concentrarsi 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 a tutte le altre.
zoomTo:
- Modifica il livello di zoom sul valore specificato, mantenendo tutti gli altri proprietà sono le stesse.
zoomBy:
- Aumenta (o diminuisce, se il valore è negativo) il livello di zoom in base al valore specificato.
zoomBy:atPoint:
- Aumenta (o diminuisce, se il valore è negativo) il livello di zoom in base al valore specificato, mantenendo il valore posizione sullo schermo.
setTarget:
- Modifica la latitudine e longitudine della videocamera, preservando tutte le altre proprietà.
setTarget:zoom:
- Modifica la latitudine, la longitudine e lo zoom della videocamera, mentre preservando tutte le altre proprietà.
setCamera:
- Imposta un nuovo
GMSCameraPosition
. scrollByX:Y:
- Modifica la latitudine e la longitudine della videocamera per spostare la mappa per il numero di punti specificato. Un valore x positivo causa la la fotocamera a destra, in modo che la mappa sia stata spostata verso rimanenti. Un valore y positivo fa sì che la fotocamera si sposti verso il basso, in modo che la mappa che sembra essere spostato più in alto. Lo scorrimento è relativo allo scorrimento attuale della videocamera l'orientamento. Ad esempio, se la videocamera ha un rilevamento di 90 gradi: est è "su".
fitBounds:
- Trasforma la fotocamera per centrare i limiti specificati sullo schermo in il livello di zoom più alto possibile. Applica un valore predefinito con una spaziatura interna inferiore ai 64 punti.
fitBounds:withPadding:
- Trasforma la fotocamera per centrare i limiti specificati sulla 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 sulla
schermo al massimo livello di zoom possibile. Con
UIEdgeInsets
, specifichi la spaziatura interna per ogni lato del riquadro di delimitazione in modo indipendente. di Gemini Advanced.
Utilizza GMSMapView
per modificare una singola proprietà
GMSMapView
offre diversi metodi che ti consentono di spostare la videocamera senza utilizzare una
Oggetto GMSCameraPosition
o oggetto GMSCameraUpdate
. Con questi metodi,
come animateToLocation:
o animateToZoom:
, puoi animare una modifica in un
singola proprietà della fotocamera.
Ad esempio, utilizza il metodo toViewingAngle:
per animare una modifica alla fotocamera
inclina.
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
di latitudine e longitudine ed essere rappresentate in modo programmatico da un
CLLocationCoordinate2D
, creato con CLLocationCoordinate2DMake
.
Usa GMSCameraPosition
per cambiare la località. In questo esempio, la mappa scatta
nella 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 lo
animateToCameraPosition:
anziché impostare la proprietà camera
. Oppure
usa 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 la sua
metodo integrato, scrollByX:Y:
, per specificare il numero di punti per scorrere
fotocamera nelle direzioni X e Y. In questo esempio, fai scorrere la fotocamera 200
punta a destra e 100 punti in 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 vero nord, per dal bordo superiore della mappa. Ad esempio, un orientamento di 90 gradi restituisce una mappa dove 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 inclinazione (angolo di visualizzazione)
L'angolo di visione è la posizione della videocamera su un arco che si trova direttamente sopra il della posizione centrale della mappa e della superficie della Terra, misurate in gradi dal nadir (la direzione che punta direttamente sotto la videocamera). Quando cambi l'angolo di visualizzazione, la mappa appare in prospettiva, con elementi tra la fotocamera e la posizione sulla mappa appare proporzionalmente più grande e gli elementi oltre la posizione sulla mappa proporzionalmente più piccolo, 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, il valore massimo è di 65 gradi. Per il livello di zoom 10 o inferiore, l'angolo massimo è 30 gradi.
Imposta l'angolo di visione 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 zoom
Il livello di zoom della fotocamera determina la scala della mappa. Con zoom maggiore ai livelli, puoi vedere più dettagli sullo schermo, mentre a livelli di zoom più piccoli, possono vedere più aree del 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 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
Spostare la videocamera in modo che un'intera area di interesse sia visibile con la massima visibilità un possibile livello di zoom, imposta dei limiti per l'inquadratura della videocamera. Ad esempio, se desideri visualizzare tutte le stazioni di servizio nel raggio di cinque miglia dall'attuale di posizione, sposta la videocamera in modo che siano tutte visibili sullo schermo:
- Calcola il
GMSCoordinateBounds
che vuoi saranno visibili sullo schermo. - Utilizza il metodo
cameraForBounds:insets:
diGMSMapView
per restituire un nuovoGMSCameraPosition
.
L'impostazione di questi limiti assicura che l'elemento GMSCoordinateBounds
specificato si adatti completamente
rispetto alle dimensioni della mappa corrente. Tieni presente che questo metodo imposta l'inclinazione e l'orientamento
della mappa a 0.
L'esempio seguente mostra come cambiare la fotocamera in modo che le città di Vancouver e Calgary appaiono 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 confini della mappa, ma l'utente può scorrere o eseguire la panoramica al di fuori di questi limiti. Puoi invece limitare la coordinata centra i margini del punto focale della mappa (il target della fotocamera), in modo che gli utenti possono scorrere ed eseguire la panoramica solo all'interno di questi limiti.
Ad esempio, un'app di vendita al dettaglio di un centro commerciale o di un aeroporto potrebbe la mappa a limiti specifici, consentendo agli utenti di scorrere ed eseguire la panoramica all'interno di questi limiti.
Per limitare il panning a limiti specifici, imposta la proprietà cameraTargetBounds
di
GMSMapView
a 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 l'obiettivo della videocamera viene vincolato a un'area leggermente più grande dell'area visibile. L'utente può scorrere e fare una panoramica, a condizione che il target della videocamera rimanga all'interno dell'area delimitata. La a croce rappresenta il target della videocamera:
La mappa riempie sempre l'area visibile, anche se per questo viene visualizzata che non rientrano nei 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. La il seguente diagramma illustra questo scenario. La croce rappresenta la fotocamera target:
Nel diagramma seguente, il target della videocamera ha limiti molto limitati, offrendo all'utente sono poche le opportunità di scorrere o eseguire la panoramica della mappa. La croce rappresenta l'obiettivo della videocamera:
Impostare uno zoom minimo o massimo
Le costanti globali kGMSMinZoomLevel
e kGMSMaxZoomLevel
definiscono
valori di zoom minimi o massimi. Per impostazione predefinita, minZoom
e maxZoom
di GMSMapView
sono impostate su queste costanti.
Per limitare l'intervallo di livelli di zoom disponibili per la mappa, imposta un valore minimo e massimo livello di zoom. 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:
. ma
può leggere i valori correnti utilizzando le proprietà minZoom
e maxZoom
. Questo
è 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 l'aggiornamento dei valori di zoom minimo e massimo, il livello di zoom della videocamera è impostato su al di fuori del nuovo intervallo, lo zoom corrente si aggiorna automaticamente mostra 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, la 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];