Korzystając z pakietu SDK Map na iOS, możesz zmienić punkt widzenia mapy, zmieniając kamerę mapy.
Dzięki pakietowi Maps SDK na iOS użytkownicy mogą przechylać i obracać mapy, by dostosować je do orientacji, która będzie im odpowiadała. Użytkownicy mogą przesuwać mapę przy dowolnym poziomie powiększenia oraz zmieniać jej spojrzenie z niewielkim opóźnieniem.
Zmiany wprowadzone w aparacie nie powodują zmiany znaczników, linii łamanych ani innych dodanych elementów graficznych. Możesz jednak zmieniać je, aby lepiej dopasować je do nowego widoku.
Widok mapy
Maps SDK na iOS wykorzystuje odwzorowanie ekranu, które reprezentuje powierzchnię świata (kulę sferyczną) na ekranie urządzenia (płaską płaszczyznę).
położenie kamery,
Widok mapy jest modelowany jako aparat patrzący w dół na płaskiej płaszczyźnie. Położenie kamery (a tym samym jej renderowanie) określają te właściwości: miejsce docelowe (lokalizacja geograficzna i szerokość geograficzna), wykorzystanie, przechylenie i powiększenie.

Cel (lokalizacja)
Cel kamery to lokalizacja środka mapy, określona jako współrzędne długości i szerokości geograficznej.
Szerokość geograficzna może wynosić od -85 do 85 stopni (włącznie). Wartości powyżej lub poniżej tego zakresu zostaną ograniczone do najbliższej wartości w tym zakresie. Na przykład określenie szerokości geograficznej wynoszącej 100 spowoduje ustawienie wartości na 85. Długość geograficzna mieści się w zakresie od -180 do 180 stopni (włącznie). Wartości powyżej lub poniżej tego zakresu zostaną spakowane, aby mieściły się w zakresie (–180, 180). Na przykład rozmiary 480, 840 i 1200 zostaną spadzone do 120 stopni.Orientacja (orientacja)
Łożysko kamery określa kierunek kompasu w stopniach wyrażony w stopniach od prawdziwej północy, co odpowiada górnej krawędzi mapy. Jeśli narysowasz pionową linię od środka mapy do górnej krawędzi mapy, kąt wierzchołka odpowiada ustawieniu kamery (mierzonej w stopniach) względem prawdziwej północy.
Znak 0 oznacza, że początek mapy wskazuje prawdziwą północ. Wartość 90 oznacza, że punkt u góry mapy wskazuje na wschód (90 stopni na kompasie). Wartość 180 oznacza początek mapy na południe.
Interfejs API Map Google umożliwia zmianę kierunku mapy. Na przykład ktoś, kto prowadzi samochód, często zmienia mapę drogową, by dostosować ją do kierunku podróżowania, natomiast turyści korzystający z mapy i kompasu zwykle ustawiają mapę tak, aby linia pionowa kierowała się na północ.
Pochylenie (kąt patrzenia)
Pochylenie definiuje położenie kamery na łuku bezpośrednio nad środkowym położeniem mapy mierzoną w stopniach od nadir (kierunku bezpośrednio pod aparatem). Wartość 0 oznacza aparat skierowany prosto do dołu. Wartości większe niż 0 to aparat, który jest ustawiany do horyzontu o określoną liczbę stopni. Gdy zmienisz kąt wyświetlania, mapa będzie wyświetlana z perspektywy. Różne obiekty mogą być mniejsze, a obiekty w pobliżu będą większe. Ilustracje poniżej pokazują to.
Na poniższych obrazach kąt patrzenia wynosi 0 stopni. Pierwszy obraz przedstawia schemat. Pozycja 1 oznacza położenie kamery, a 2 to aktualna pozycja na mapie. Otrzymana mapa jest widoczna pod spodem.
![]() |
![]() |
Na poniższych obrazach kąt patrzenia wynosi 45 stopni. Zwróć uwagę, że kamera porusza się w połowie między łukami (0 stopni) a podłożem (90 stopni) do pozycji 3. Kamera nadal wskazuje punkt centralny mapy, ale obszar reprezentowany przez linię w pozycji 4 jest teraz widoczny.
![]() |
![]() |
Mapa na tym zrzucie ekranu jest nadal wyśrodkowana na tym samym punkcie, co pierwotna mapa, ale na górze mapy pojawiło się więcej funkcji. W miarę zwiększania kąta przekraczającego 45 stopni funkcje kamery i pozycji na mapie wydają się proporcjonalnie większe, a elementy poza pozycją mapy wyglądają na proporcjonalnie mniejsze, co daje efekt trójwymiarowy.
Szersza
Poziom powiększenia kamery określa skalę mapy. Na większych poziomach powiększenia na ekranie widać więcej szczegółów, ale na mniejszych poziomach powiększenia widać większą część świata. Na poziomie powiększenia 0 skala mapy wygląda tak, że cały świat ma szerokość około 256 punktów.
Zwiększenie poziomu powiększenia o 1 powoduje podwojenie szerokości świata na ekranie. W związku z tym przy poziomie powiększenia N szerokość świata wynosi około 256 * 2N punktów. Na przykład na poziomie 2 cały świat ma około 1024 punkty.
Poziom powiększenia nie musi być liczbą całkowitą. Zakres poziomu powiększenia dozwolony przez mapę zależy od wielu czynników, w tym od typu celu, typu mapy i rozmiaru ekranu. Każda wartość spoza zakresu zostanie przekonwertowana na najbliższą prawidłową wartość, która może być minimalnym lub maksymalnym powiększeniem. Poniższa lista pokazuje przybliżony poziom szczegółowości na poszczególnych poziomach powiększenia:
- 1: Świat
- 5: ląd/kontynent
- 10: Miasto
- 15: ulice
- 20: Budynki
![]() |
![]() |
![]() |
Ustaw początkową pozycję kamery
Ustaw początkową pozycję kamery za pomocą obiektu GMSCameraPosition
, który umożliwia ustawienie szerokości i długości geograficznej celu oraz kierunku, przechylania i powiększania.
Aby ustawić początkową pozycję kamery, utwórz obiekt GMSCameraPosition
, a następnie przekaż go do konstruktora wygodnego GMSMapView
.
Swift
let camera = GMSCameraPosition( latitude: -33.8683, longitude: 151.2086, zoom: 16 ) mapView = GMSMapView(frame: self.view.bounds, camera: camera)
Objective-C
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:16]; mapView = [GMSMapView mapWithFrame:self.view.bounds camera:camera];
Obiekt GMSMapView
możesz też utworzyć przy użyciu domyślnej metody init (UIView
).
W tym przypadku położenie kamery zaczyna się od domyślnej lokalizacji i możesz ją zmienić po utworzeniu.
Swift
mapView = GMSMapView(frame: self.view.bounds)
Objective-C
mapView = [[GMSMapView alloc] initWithFrame:self.view.bounds];
Zmiana pozycji kamery
Możesz automatycznie zmienić położenie kamery, aby określić jej lokalizację, kąt uchylenia, przechylenie i powiększenie. GMSMapView
udostępnia kilka metod zmiany pozycji kamery, ale zwykle używa się GMSCameraPosition
lub GMSCameraUpdate
:
GMSCameraPosition
zawiera właściwości i metody służące do zmiany każdego parametru pozycji kamery: kierowanie, zakręt, obrót i powiększenie.GMSCameraUpdate
umożliwia zmianę docelowego, zakręcenia, pochylenia i powiększenia, a także dodatkowe metody ułatwiające obsługę przewijania, powiększanie, wyśrodkowanie kamery w określonych granicach.
Gdy przesuwasz kamerę, możesz „przyciągnąć” ją do nowej pozycji, co oznacza, że nie ma animacji ani poruszać się po niej. Jeśli np. animujesz zmianę docelowego położenia kamery, animacja przesuwa się ze starej lokalizacji do nowej.
Animacja nakłada się na bieżące atrybuty kamery. Czas trwania animacji możesz określić za pomocą animacji głównej.
Użyj konta GMSCameraPosition
Aby zmienić kamerę w obiekcie GMSCameraPosition
, musisz utworzyć nowy obiekt lub skopiować istniejący, a następnie ustawić go na obiekcie GMSMapView
. Obiekt GMSCameraPosition
pozwala przyciągnąć kamerę do nowej lokalizacji, niezależnie od animacji.
Użyj obiektu GMSCameraPosition
, aby skonfigurować właściwości kamery, takie jak szerokość, długość geograficzna, powiększenie, kierunek czy kąt patrzenia. Następnie używasz tego obiektu do ustawienia właściwości camera
elementu 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];
Pomiń wszystkie właściwości GMSCameraPosition
, które chcesz ustawić na wartość domyślną.
Aby animować przenoszenie, użyj metody animateToCameraPosition:
zamiast ustawiać właściwość camera
.
Użyj konta GMSCameraUpdate
GMSCameraUpdate
umożliwia zaktualizowanie położenia kamery i określenie, czy ma być przyciągana, czy animowana do nowej pozycji. Zaletą usługi GMSCameraUpdate
jest wygoda. Możesz używać GMSCameraPosition
do wykonywania tych samych zadań co GMSCameraUpdate
, ale GMSCameraUpdate
udostępnia dodatkowe metody pomocnicze, które ułatwiają manipulowanie kamerą.
Aby np. GMSCameraPosition
zwiększyć bieżący poziom powiększenia, musisz najpierw określić bieżący poziom powiększenia, a potem utworzyć obiekt GMSCameraPosition
, w którym ustawisz powiększenie o wartość wyższą niż bieżący powiększenie.
Możesz też utworzyć obiekt GMSCameraUpdate
metodą fabryczną zoomIn:
. Następnie zaktualizuj kamerę, przekazując obiekt GMSCameraUpdate
do metody 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];
Aby przyciągnąć aparat do nowej pozycji, użyj metody GMSMapView
moveCamera:
.
W kolejnym przykładzie używasz GMSCameraUpdate
, aby animować ruch kamery i wyśrodkować ją w 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];
Tworzenie obiektu GMSCameraUpdate
Utwórz obiekt GMSCameraUpdate
za pomocą jednej z jego metod fabrycznych.
zoomIn:
izoomOut:
- Zmień bieżący poziom powiększenia o 1,0, zachowując wszystkie pozostałe właściwości.
zoomTo:
- Zmienia poziom powiększenia na określoną wartość, zachowując wszystkie pozostałe właściwości.
zoomBy:
- Zwiększa (lub zmniejsza, jeśli wartość jest ujemna) poziom powiększenia o określoną wartość.
zoomBy:atPoint:
- Zwiększa (lub zmniejsza, jeśli wartość jest ujemna) poziom powiększenia o określoną wartość, utrzymując pozycję określonego punktu na ekranie.
setTarget:
- Zmienia szerokość i długość geograficzną kamery przy zachowaniu wszystkich innych właściwości.
setTarget:zoom:
- Zmienia szerokość i długość geograficzną kamery oraz jej powiększenie, zachowując pozostałe właściwości.
setCamera:
- Wyznacza nowy
GMSCameraPosition
. scrollByX:Y:
- Zmienia szerokość i długość geograficzną kamery, aby przesunąć mapę o określoną liczbę punktów. Dodatnia wartość x powoduje, że aparat porusza się w prawo, więc mapa wydaje się poruszać w lewo. Dodatnia wartość y powoduje przesunięcie kamery w dół, tak aby mapa mogła się przesunąć w górę. Przewijanie zależy od bieżącego położenia kamery. Jeśli na przykład kamera jest ustawiona na 90 stopni, to wschód oznacza „w górę”.
fitBounds:
- Przekształca kamerę tak, aby wyśrodkować określone granice ekranu przy najwyższym możliwym poziomie powiększenia. Stosuje domyślne dopełnienie do granic 64 punktów.
fitBounds:withPadding:
- Przekształca kamerę, aby wyśrodkować określone granice ekranu na możliwie najwyższym poziomie. Użyj tej metody, aby określić to samo wypełnienie w punktach po obu stronach ramki ograniczającej.
fitBounds:withEdgeInsets:
- Przekształca kamerę, aby wyśrodkować określone granice ekranu na możliwie najwyższym poziomie. W
UIEdgeInsets
podajesz dopełnienie każdej strony ramki ograniczającej niezależnie.
Aby zmienić pojedynczą właściwość, użyj GMSMapView
GMSMapView
udostępnia kilka metod umożliwiających poruszanie się przy użyciu obiektu GMSCameraPosition
lub GMSCameraUpdate
. Korzystając z tych metod, np. animateToLocation:
lub animateToZoom:
, możesz animować zmiany w pojedynczej właściwości kamery.
Możesz np. użyć metody toViewingAngle:
, aby animować zmianę przechylenia kamery.
Swift
mapView.animate(toViewingAngle: 45)
Objective-C
[mapView animateToViewingAngle:45];
Ustaw cel (lokalizacja)
Lokalizacja określa środek mapy. Lokalizacje są określane przez szerokość i długość geograficzną i automatycznie reprezentowane przez obiekt CLLocationCoordinate2D
utworzony w CLLocationCoordinate2DMake
.
Użyj GMSCameraPosition
, aby zmienić lokalizację. W tym przykładzie mapa przyciąga się
do nowej lokalizacji.
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];
Aby animować zmianę i przesunąć mapę do nowej lokalizacji, możesz użyć metody animateToCameraPosition:
, zamiast ustawiać właściwość camera
.
Możesz też użyć metody animateToLocation:
w GMSMapView
.
Swift
mapView.animate(toLocation: CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208))
Objective-C
[mapView animateToLocation:CLLocationCoordinate2DMake(-33.868, 151.208)];
Możesz też utworzyć obiekt GMSCameraUpdate
, aby poruszać kamerą. Użyj wbudowanej metody scrollByX:Y:
, aby określić liczbę punktów do przewijania kamery w kierunkach X i Y. W tym przykładzie przewijasz kamerę o 200 punktów w prawo i 100 punktów w dół:
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];
Ustaw nośnik (orientacja)
Orientacja to kierunek kompasu, mierzony w stopniach od prawdziwej północy, w odniesieniu do górnej krawędzi mapy. Na przykład kąt 90 stopni tworzy mapę, w której górna krawędź wskazuje na wschód.
Ustaw automatycznie nośnik za pomocą metody GMSCameraPosition
lub GMSCameraUpdate
albo za pomocą metody animateToBearing:
o wartości GMSMapView
.
Swift
mapView.animate(toBearing: 0)
Objective-C
[mapView animateToBearing:0];
Ustaw pochylenie (kąt patrzenia)
Kąt oglądania to położenie kamery na łuku między środkową pozycją mapy a powierzchnią Ziemi, mierzoną w stopniach od nadiru (kierunku bezpośrednio pod kamerą). Gdy zmienisz kąt widoku, mapa będzie wyświetlana z perspektywy. Obiekty między kamerą a pozycją na mapie będą proporcjonalnie większe, a elementy wykraczające poza pozycję mapy będą proporcjonalnie mniejsze, co zapewni efekt trójwymiarowego.
Kąt wyświetlania może się mieścić w zakresie od 0 (wskazując prosto na mapie) do maksimum zależnego od poziomu powiększenia. W przypadku powiększenia na poziomie 16 lub wyższym maksymalny kąt wynosi 65 stopni. W przypadku powiększenia na poziomie 10 i niższym maksymalny kąt wynosi 30 stopni.
Ustaw kąt wyświetlania automatycznie za pomocą metody GMSCameraPosition
lub GMSCameraUpdate
albo metody animateToViewingAngle:
o wartości GMSMapView
.
Swift
mapView.animate(toViewingAngle: 45)
Objective-C
[mapView animateToViewingAngle:45];
Ustaw powiększenie
Poziom powiększenia kamery określa skalę mapy. Na większych poziomach powiększenia możesz zobaczyć na ekranie więcej szczegółów, a na mniejszych poziomach powiększenia możesz zobaczyć większy obszar świata.
Ustaw powiększenie automatycznie za pomocą GMSCameraPosition
lub GMSCameraUpdate
albo za pomocą metody animateToZoom:
: GMSMapView
.
Swift
mapView.animate(toZoom: 12)
Objective-C
[mapView animateToZoom:12];
Poniższy przykład wykorzystuje metodę fabryczną zoomIn:
do stworzenia obiektu GMSCameraUpdate
, aby animować powiększenie o jeden poziom od bieżącego poziomu.
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];
Wyznacz granice
Aby przesunąć kamerę tak, aby cały obszar zainteresowań był widoczny przy jak największym powiększeniu, ustaw granice widoku kamery. Jeśli na przykład chcesz wyświetlić wszystkie stacje benzynowe w promieniu 5 mil od bieżącej pozycji użytkownika, przesuń kamerę tak, aby były widoczne na ekranie:
- Oblicz
GMSCoordinateBounds
, która ma być widoczna na ekranie. - Użyj metody
cameraForBounds:insets:
funkcjiGMSMapView
, aby zwrócić nową wartośćGMSCameraPosition
.
Jeśli ustawisz te granice, GMSCoordinateBounds
będzie w całości pasować do rozmiaru bieżącej mapy. Pamiętaj, że ta metoda
ustawia przechylenie i nośnik mapy na 0.
Poniższy przykład pokazuje, jak zmienić aparat, tak aby miasta w Vancouver i Calgary były widoczne w tym samym widoku.
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;
Ogranicz interakcję użytkownika do określonego obszaru
W powyższych scenariuszach możesz ustawić granice mapy, ale użytkownik będzie mógł je przewijać lub przesuwać. Zamiast tego możesz ograniczyć obszar wokół środkowej części mapy,
Na przykład aplikacja sklepu detalicznego lub centrum handlowego może ograniczyć mapę do określonych granic, tak aby użytkownicy mogli ją przewijać i przesuwać.
Aby ograniczyć panowanie do określonych granic, ustaw właściwość cameraTargetBounds
elementu GMSMapView
na obiekt GMSCoordinateBounds
, który określa wymagane granice. Aby później usunąć ograniczenie, ustaw wartość cameraTargetBounds
na nil.
Swift
mapView.cameraTargetBounds = bounds
Objective-C
mapView.cameraTargetBounds = bounds;
Poniższy diagram przedstawia scenariusz, w którym cel kamery jest ograniczony do obszaru, który jest nieco większy niż widoczny obszar. Użytkownik może przewijać i przesuwać, pod warunkiem, że cel kamery znajduje się w zawężonym obszarze. Krzyż reprezentuje cel kamery:

Mapa zawsze wypełnia widoczny obszar, nawet jeśli widoczne obszary znajdują się poza zdefiniowanymi granicami. Jeśli np. ustawisz kamerę w rogu ograniczonego obszaru, obszar poza tym obszarem będzie widoczny, ale użytkownicy nie będą mogli przewijać obszaru w inne miejsce. Ten scenariusz obrazuje poniższy diagram. Krzyż reprezentuje cel kamery:

Na tym diagramie cel kamery ma bardzo ograniczone granice, co daje użytkownikowi bardzo mało możliwości przewijania mapy. Krzyżyk reprezentuje cel kamery:

Ustaw minimalne lub maksymalne powiększenie
Stałe globalne kGMSMinZoomLevel
i kGMSMaxZoomLevel
określają minimalne i maksymalne wartości powiększenia. Domyślnie właściwości minZoom
i maxZoom
GMSMapView
są ustawione jako stałe.
Aby ograniczyć zakres powiększenia dostępnych na mapie, ustaw minimalny i maksymalny poziom powiększenia. Poniższy kod ogranicza poziom powiększenia do 10-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];
Zakres powiększenia musisz ustawić metodą setMinZoom:maxZoom:
, ale bieżące wartości możesz odczytywać za pomocą właściwości minZoom
i maxZoom
.
Ta metoda przydaje się przy ograniczaniu tylko jednej z wartości. Ten kod zmienia tylko minimalny poziom powiększenia.
Swift
mapView.setMinZoom(12, maxZoom: mapView.maxZoom)
Objective-C
[mapView setMinZoom:12 maxZoom:mapView.maxZoom];
Jeśli po zaktualizowaniu wartości minimalnej i maksymalnej powiększenia poziom powiększenia aparatu zostanie ustawiony na wartość spoza nowego zakresu, aktualne powiększenie zostanie automatycznie zaktualizowane, aby wyświetlić najbliższą prawidłową wartość. Na przykład w poniższym kodzie pierwotne powiększenie jest zdefiniowane jako 4. Gdy później zakres powiększenia zostanie ustawiony na 10–15, bieżące powiększenie zostanie zmienione na 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];