Kamera ve görünüm

Platform seçin: Android iOS JavaScript

iOS için Haritalar SDK'sı ile haritanın kamerasını değiştirerek kullanıcının harita bakış açısını değiştirebilirsiniz.

iOS için Haritalar SDK'sı ile kullanıcılarınız, haritalarınızı yatırıp döndürerek bağlamlarına uygun bir yöne ayarlayabilir. Herhangi bir yakınlaştırma düzeyinde, kullanıcılar çok küçük bir gecikmeyle haritayı kaydırabilir veya perspektifini değiştirebilir.

Kamerada yapılan değişiklikler, eklediğiniz işaretçileri, çoklu çizgileri veya diğer grafikleri değiştirmez, ancak bu eklemeleri yeni görünüme daha iyi uyacak şekilde değiştirmek isteyebilirsiniz.

Haritanın görünümü

iOS için Haritalar SDK'sı, cihazınızın ekranında dünyanın yüzeyini (küre) (düz bir düzlem) temsil etmek üzere Mercator projeksiyonunu kullanır.

Kamera konumu

Harita görünümü, düz bir düzlemde aşağıya bakan kamera olarak modellenir. Kameranın konumu (dolayısıyla haritanın oluşturulması) şu özellikler tarafından belirlenir: hedef (enlem/boylam konumu), dönme, yatırma ve yakınlaştırma.

Kamera özellikleri şeması

Hedef (konum)

Kamera hedefi, harita merkezinin enlem ve boylam koordinatları olarak belirtilen konumudur.

Enlem, -85 ile 85 derece (her ikisi de dahil) arasında olabilir. Bu aralığın üstündeki veya altındaki değerler, bu aralıktaki en yakın değere sabitlenir. Örneğin, enlem 100 olarak belirtildiğinde değer 85 olarak ayarlanır. Boylam -180 ile 180 derece arasında değişir. Bu aralığın üzerindeki veya altındaki değerler, (-180, 180) aralığında olacak şekilde sarmalanır. Örneğin, 480, 840 ve 1200 değerlerinin tamamı 120 dereceye kadar sarmalanır.

Rulman (yön)

Kamera yönü, haritanın üst kenarına karşılık gelen, gerçek kuzeyden derece cinsinden ölçülen pusula yönünü belirtir. Haritanın merkezinden haritanın üst kenarına dikey bir çizgi çizerseniz, yer, kameranın gerçek kuzey yönüne göre kameranın yönüne (derece cinsinden ölçülür) karşılık gelir.

0 noktası, haritanın üst kısmının gerçek kuzeyi gösterdiği anlamına gelir. Yön değeri 90, doğuya alınması gereken harita noktalarının üst kısmıdır (pusulada 90 derece). 180 değeri, güneye doğru yapılması gereken harita noktalarının üst kısmı anlamına gelir.

Haritalar API'si bir haritanın yönünü değiştirmenize olanak tanır. Örneğin, araba kullanan bir kişi kendi seyahat yönü ile uyumlu bir yol haritası çevirir. Yürüyüşçüler ise harita ve pusulayı kullanarak genellikle haritayı dikey bir çizginin kuzeyi gösterecek şekilde yönlendirir.

Yatır (görüntüleme açısı)

Eğme, kameranın bir yay üzerinde doğrudan haritanın merkez konumunun üzerinde yer alan konumunu tanımlar. Konum, nadir'den (kameranın doğrudan altını gösteren yön) derece cinsinden ölçülür. 0 değeri, doğrudan aşağı doğru doğrulanan bir kameraya karşılık gelir. 0'dan büyük değerler, belirtilen sayıda dereceyle ufağa doğru eğilen bir kameraya karşılık gelir. Görüntüleme açısını değiştirdiğinizde, harita perspektif olarak görünür. Uzaktaki özellikler daha küçük, yakındaki özellikler ise daha büyük görünür. Aşağıdaki resimlerde bu gösterilmektedir.

Aşağıdaki resimlerde görüntüleme açısı 0 derecedir. İlk resimde bunun bir şeması gösterilmektedir. Konum 1 kamera konumu, 2. konum ise geçerli harita konumudur. Ortaya çıkan harita onun altında gösterilir.

Kamerası 0 görüntüleme açısında, 18 yakınlaştırma düzeyinde yerleştirilmiş bir haritanın ekran görüntüsü.
Kameranın varsayılan görüntüleme açısıyla görüntülenen harita.
Kameranın varsayılan konumunu, doğrudan harita konumunun üzerinde 0 derecelik bir açıyla gösteren şema.
Kameranın varsayılan görüntüleme açısı.

Aşağıdaki resimlerde görüntüleme açısı 45 derecedir. Kameranın yukarıdan düz (0 derece) ile zemin (90 derece) arasında bir yay boyunca 3 konumuna kadar hareket ettiğine dikkat edin. Kamera hâlâ haritanın merkez noktasını işaret ediyor ancak 4 konumundaki çizginin temsil ettiği alan artık görülebiliyor.

Kameranın 45 derece görüntüleme açısında, 18 yakınlaştırma düzeyinde yerleştirildiği haritanın ekran görüntüsü.
45 derecelik görüntüleme açısıyla görüntülenen harita.
Kameranın görüş açısının 45 dereceye ayarlandığını, yakınlaştırma seviyesinin ise hâlâ 18'e ayarlandığını gösteren şema.
45 derecelik kamera görüş açısı.

Bu ekran görüntüsündeki harita, orijinal haritadakiyle aynı noktada ortadadır ancak haritanın üst kısmında daha fazla özellik görüntülenmiştir. Açıyı 45 derecenin üzerine çıkardığınızda, kamera ile harita konumu arasındaki öğeler orantılı olarak daha büyük görünürken harita konumunun dışındaki öğeler orantılı olarak daha küçük görünür ve üç boyutlu bir efekt elde eder.

Tarih aralığını

Kameranın yakınlaştırma düzeyi, haritanın ölçeğini belirler. Daha yüksek yakınlaştırma seviyelerinde ekranda daha fazla ayrıntı görülebilirken, daha küçük yakınlaştırma seviyelerinde ekranda dünyanın daha fazlası görülebilir. Yakınlaştırma seviyesi 0 olduğunda, haritanın ölçeği tüm dünyanın genişliği yaklaşık 256 nokta olacak şekilde olur.

Yakınlaştırma düzeyini 1 artırdığınızda, ekrandaki yerküre genişliği iki katına çıkar. Bu nedenle, N yakınlaştırma düzeyinde dünyanın genişliği yaklaşık 256 * 2N noktadır. Örneğin, yakınlaştırma seviyesi 2 olduğunda tüm dünya yaklaşık 1.024 puan genişliğindedir.

Yakınlaştırma düzeyinin tam sayı olması gerekmez. Haritanın izin verdiği yakınlaştırma seviyeleri aralığı hedef, harita türü ve ekran boyutu gibi bir dizi faktöre bağlıdır. Aralık dışında kalan tüm sayılar, minimum yakınlaştırma seviyesi veya maksimum yakınlaştırma seviyesi olabilecek bir sonraki geçerli değere dönüştürülür. Aşağıdaki listede, her bir yakınlaştırma düzeyinde görmeyi bekleyebileceğiniz yaklaşık ayrıntı düzeyi gösterilmektedir:

  • 1: Dünya
  • 5: Karalar/kıta
  • 10: Şehir
  • 15: Sokaklar
  • 20: Binalar
Aşağıdaki resimlerde, farklı yakınlaştırma seviyelerinin görsel görünümü gösterilmektedir:
5 yakınlaştırma düzeyindeki bir haritanın ekran görüntüsü
Yakınlaştırma seviyesi 5 olan bir harita.
15 yakınlaştırma düzeyindeki bir haritanın ekran görüntüsü
Yakınlaştırma seviyesi 15 olan bir harita.
20 yakınlaştırma düzeyinde bir haritanın ekran görüntüsü
Yakınlaştırma seviyesi 20 olan bir harita.

İlk kamera konumunu ayarla

Yatma, yatırma ve yakınlaştırma ile birlikte hedefin enlem ve boylamını ayarlamanıza olanak tanıyan GMSCameraPosition nesnesini kullanarak ilk kamera konumunu ayarlayın.

İlk kamera konumunu ayarlamak için bir GMSMapViewOptions nesnesi oluşturun ve camera özelliğini bir GMSCameraPosition olarak ayarlayın. Ardından, seçeneklerinizi GMSMapView kolaylık oluşturucusuna iletin.

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];

GMSMapView nesnesini, varsayılan UIView init yöntemini kullanarak da oluşturabilirsiniz. Bu durumda, kamera konumu varsayılan konumda başlar ve kamera oluşturulduktan sonra değiştirilir.

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];

Kamera konumunu değiştirin

Konum, yön, yatırma ve yakınlaştırma ayarlarını yapmak için kamera konumunu programlı bir şekilde değiştirebilirsiniz. GMSMapView, kamera konumunu değiştirmek için kullanabileceğiniz çeşitli yöntemler sunar. Ancak genellikle GMSCameraPosition veya GMSCameraUpdate kullanırsınız:

  • GMSCameraPosition, her kamera konumu parametresini değiştirmek için kullandığınız özellikleri ve yöntemleri (hedefleme, taşıma, yatırma ve yakınlaştırma) içerir.

  • GMSCameraUpdate hedefi, yönü, yatırmayı ve yakınlaştırmayı değiştirmenize olanak tanır ve ayrıca kaydırma, gelişmiş yakınlaştırma, kameranın önceden tanımlanmış sınırlar içinde ortalamasını destekleyen ek kullanışlı yöntemler içerir.

Kamerayı hareket ettirirken kamerayı yeni konumuna "tutturmayı", yani animasyon içermeyi tercih edebilir veya hareketi canlandırabilirsiniz. Örneğin, kameranın hedef konumunda yapılan bir değişikliği canlandırırsanız animasyon önceki konumdan yenisine kaydırılır.

Animasyon, geçerli kamera özellikleri ile yeni kamera özellikleri arasında arapolasyon yapar. Temel Animasyon'u kullanarak animasyonun süresini kontrol edebilirsiniz.

GMSCameraPosition hareketini kullanın

Kamerayı GMSCameraPosition ile değiştirmek için yeni bir nesne oluşturur veya mevcut bir nesneyi kopyalayıp GMSMapView nesnesinin üzerinde ayarlarsınız. Kamerayı yeni konuma animasyonla veya animasyonsuz olarak tutturmak için GMSCameraPosition nesnesini kullanın.

Enlem, boylam, yakınlaştırma, yön ve görüntüleme açısı gibi kamera özelliklerini yapılandırmak için GMSCameraPosition nesnesi kullanın. Daha sonra bu nesneyi GMSMapView öğesinin camera özelliğini ayarlamak için kullanırsınız.

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];
      

Varsayılan değerine ayarlamak istediğiniz GMSCameraPosition özelliklerini atlayın.

Taşıma işlemine animasyon eklemek için camera özelliğini ayarlamak yerine animateToCameraPosition: yöntemini kullanın.

GMSCameraUpdate hareketini kullanın

GMSCameraUpdate, kamera konumunu güncellemenize ve bu yeni konuma tutturma veya animasyon ekleme arasında seçim yapmanızı sağlar. GMSCameraUpdate, sağladığı avantaj kolaylık sağlamasıdır. GMSCameraUpdate ile aynı görevleri gerçekleştirmek için GMSCameraPosition kullanabilirsiniz ancak GMSCameraUpdate, kamerayı manipüle etmeyi kolaylaştıracak ek yardımcı yöntemler sağlar.

Örneğin, mevcut yakınlaştırma seviyesini artırmak amacıyla GMSCameraPosition öğesini kullanmak için önce geçerli yakınlaştırma seviyesini belirlemeniz, ardından yakınlaştırmayı mevcut yakınlaştırma değerinden bir büyük değere ayarlayacağınız bir GMSCameraPosition nesnesi oluşturmanız gerekir.

Alternatif olarak, zoomIn: yöntemiyle bir GMSCameraUpdate nesnesi oluşturun. Ardından, GMSCameraUpdate nesnesini GMSMapView animateWithCameraUpdate: yöntemine geçirerek kamerayı güncelleyin.

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];
      

Bunun yerine, kamerayı yeni konuma tutturmak için GMSMapView moveCamera: yöntemini kullanın.

Bir sonraki örnekte, kameranın Vancouver'ı ortalamasını sağlamak için GMSCameraUpdate hareketini canlandırmak amacıyla kullanıyorsunuz.

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];
      

GMSCameraUpdate nesnesi oluşturma

Yöntemlerinden birini kullanarak bir GMSCameraUpdate nesnesi oluşturun.

zoomIn: ve zoomOut:
Diğer tüm özellikleri aynı tutarken geçerli yakınlaştırma düzeyini 1, 0 olarak değiştirin.
zoomTo:
Yakınlaştırma düzeyini verilen değerle değiştirir, diğer tüm özellikleri aynı tutar.
zoomBy:
Yakınlaştırma seviyesini verilen değer kadar artırır (veya değer negatifse azaltır).
zoomBy:atPoint:
Değer negatifse yakınlaştırma düzeyini belirtilen değere göre artırır (veya azaltır) ve bu sırada belirtilen noktanın ekrandaki konumunu korur.
setTarget:
Diğer tüm özellikleri korurken kameranın enlem ve boylamını değiştirir.
setTarget:zoom:
Diğer tüm özellikleri korurken kameranın enlem, boylam ve yakınlaştırma ayarlarını değiştirir.
setCamera:
Yeni bir GMSCameraPosition ayarlar.
scrollByX:Y:
Haritayı belirtilen nokta sayısına göre hareket ettirmek için kameranın enlem ve boylamını değiştirir. Pozitif x değeri kameranın sağa doğru hareket etmesine neden olur ve harita sola gitmiş gibi görünür. Pozitif y değeri kameranın aşağı hareket etmesine ve dolayısıyla haritanın yukarıya hareket etmesine neden olur. Kaydırma, kameranın mevcut yönüne göre yapılır. Örneğin, kameranın yönü 90 dereceyse doğu yönü "yukarı"dır.
fitBounds:
Kamerayı, ekranda belirtilen sınırları mümkün olan en yüksek yakınlaştırma düzeyinde ortalayacak şekilde dönüştürür. 64 noktanın sınırlarına varsayılan bir dolgu uygular.
fitBounds:withPadding:
Kamerayı, ekranda belirtilen sınırları mümkün olan en yüksek yakınlaştırma düzeyinde ortalayacak şekilde dönüştürür. Sınırlayıcı kutunun tüm kenarları için aynı dolguyu nokta cinsinden belirtmek üzere bu yöntemi kullanın.
fitBounds:withEdgeInsets:
Kamerayı, ekranda belirtilen sınırları mümkün olan en yüksek yakınlaştırma düzeyinde ortalayacak şekilde dönüştürür. UIEdgeInsets ile sınırlayıcı kutunun her bir kenarı için dolguyu bağımsız olarak belirtirsiniz.

Tek bir mülkü değiştirmek için GMSMapView kullanma

GMSMapView, bir GMSCameraPosition nesne veya GMSCameraUpdate nesne kullanmadan kamerayı hareket ettirmenizi sağlayan çeşitli yöntemler sunar. animateToLocation: veya animateToZoom: gibi bu yöntemlerle, tek bir kamera özelliğinde yapılan değişikliği animasyon haline getirebilirsiniz.

Örneğin, kamera eğimindeki bir değişikliği canlandırmak için toViewingAngle: yöntemini kullanın.

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

Hedef belirleyin (konum)

Konum, haritanın merkezini belirler. Konumlar enlem ve boylama göre belirtilir ve CLLocationCoordinate2DMake ile oluşturulmuş bir CLLocationCoordinate2D ile programatik olarak gösterilir.

Konumu değiştirmek için GMSCameraPosition öğesini kullanın. Bu örnekte, harita yeni konuma yerleştirir.

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];
      

Değişikliği canlandırmak ve haritayı yeni konuma kaydırmak için camera özelliğini ayarlamak yerine animateToCameraPosition: yöntemini kullanabilirsiniz. İsterseniz GMSMapView üzerinde animateToLocation: yöntemini de kullanabilirsiniz.

Swift

mapView.animate(toLocation: CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208))
      

Objective-C

[mapView animateToLocation:CLLocationCoordinate2DMake(-33.868, 151.208)];
      

Kamerayı hareket ettirmek için bir GMSCameraUpdate nesnesi de oluşturabilirsiniz. Kamerayı X ve Y yönlerinde kaydırabileceğiniz nokta sayısını belirtmek için yerleşik scrollByX:Y: yöntemini kullanın. Bu örnekte kamerayı 200 nokta sağa ve 100 nokta aşağı kaydırıyorsunuz:

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];
      

Yönü ayarla

Yön, haritanın üst kenarı için gerçek kuzeyden derece cinsinden ölçülen pusula yönüdür. Örneğin, 90 derecelik bir nokta, üst kenarın doğuya doğru yöneldiği bir harita oluşturur.

Ayarı GMSCameraPosition veya GMSCameraUpdate ile programatik olarak ya da GMSMapView olan animateToBearing: yöntemiyle ayarlayın.

Swift

mapView.animate(toBearing: 0)
      

Objective-C

[mapView animateToBearing:0];
      

Yatırmayı ayarla (görüntüleme açısı)

Görüntüleme açısı, kameranın tam olarak haritanın merkez konumu ile Dünya yüzeyi arasındaki bir yay üzerindeki konumudur ve nadir'den (kameranın hemen altını gösteren yön) derece cinsinden ölçülür. Görüntüleme açısını değiştirdiğinizde, harita perspektif olarak görünür. Kamera ile harita konumu arasındaki özellikler orantılı olarak daha büyük görünür ve harita konumunun dışındaki özellikler orantılı olarak daha küçük görünür. Bu da üç boyutlu bir efekt oluşturur.

Görüntüleme açısı 0 (haritada doğrudan aşağıyı gösterir) ile yakınlaştırma seviyesine bağlı bir maksimum değere kadar değişebilir. 16 veya daha yüksek yakınlaştırma seviyesi için maksimum açı 65 derecedir. 10 veya daha düşük yakınlaştırma seviyeleri için maksimum açı 30 derecedir.

Görüntüleme açısını programatik olarak GMSCameraPosition veya GMSCameraUpdate ya da animateToViewingAngle: yöntemiyle GMSMapView ayarlayın.

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

Yakınlaştırmayı ayarla

Kameranın yakınlaştırma düzeyi, haritanın ölçeğini belirler. Yüksek yakınlaştırma seviyelerinde ekranda daha fazla ayrıntı görebilirken, düşük yakınlaştırma seviyelerinde dünyayı daha fazla görebilirsiniz.

Yakınlaştırmayı GMSCameraPosition veya GMSCameraUpdate ile ya da GMSMapView'in animateToZoom: yöntemiyle programatik olarak ayarlayın.

Swift

mapView.animate(toZoom: 12)
      

Objective-C

[mapView animateToZoom:12];
      

Aşağıdaki örnekte, geçerli düzeyden bir düzey yakınlaştırma animasyonu sağlayacak bir GMSCameraUpdate nesnesi oluşturmak için zoomIn: yöntemi kullanılmaktadır.

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];
      

Sınırları belirleyin

Kamerayı, tüm ilgilenilen alanın mümkün olan en yüksek yakınlaştırma düzeyinde görülebilecek şekilde hareket ettirmek için kamera görünümünün sınırlarını belirleyin. Örneğin, kullanıcının mevcut konumuna 8 km mesafedeki tüm benzin istasyonlarını görüntülemek istiyorsanız kamerayı tüm istasyonlar ekranda görünecek şekilde hareket ettirin.

  1. Ekranda görünmesini istediğiniz GMSCoordinateBounds değerini hesaplayın.
  2. Yeni bir GMSCameraPosition döndürmek için GMSMapView cameraForBounds:insets: yöntemini kullanın.

Bu sınırların ayarlanması, belirtilen GMSCoordinateBounds değerinin geçerli haritanın boyutuyla tamamen uyumlu olmasını sağlar. Bu yöntemin, haritanın yatmasını ve yönünü 0'a ayarladığını unutmayın.

Aşağıdaki örnekte, Vancouver ve Calgary şehirlerinin aynı görünümde görünmesi için kameranın nasıl değiştirileceği gösterilmektedir.

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;
      

Kullanıcının kaydırmasını belirli bir alanla sınırla

Bu senaryolar haritanın sınırlarını belirler, ancak kullanıcı daha sonra bu sınırların dışına kaydırma veya kaydırma yapabilir. Bunun yerine, kullanıcıların yalnızca bu sınırlar içinde kaydırma ve kaydırma işlemleri yapabilmesi için, haritanın odak noktasının (kamera hedefi) koordinat merkezi sınırlarını sınırlandırmak isteyebilirsiniz.

Örneğin, bir alışveriş merkezi veya havaalanına yönelik perakende uygulaması, haritayı belirli sınırlarla sınırlandırarak kullanıcıların bu sınırlar içinde gezinmesine ve kaydırma yapmasına olanak tanımak isteyebilir.

Kaydırmayı belirli sınırlarla kısıtlamak için GMSMapView öğesinin cameraTargetBounds özelliğini, gerekli sınırları tanımlayan bir GMSCoordinateBounds nesnesi olarak ayarlayın. Kısıtlamayı daha sonra kaldırmak için cameraTargetBounds değerini nil olarak ayarlayın.

Swift

mapView.cameraTargetBounds = bounds
      

Objective-C

mapView.cameraTargetBounds = bounds;
      

Aşağıdaki şemada, kamera hedefinin görüntü alanından biraz daha büyük bir alanla sınırlandırıldığı bir senaryo gösterilmektedir. Kamera hedefi sınırlı alanda kaldığı sürece kullanıcı sayfayı kaydırabilir ve kaydırabilir. Çarpım, kamera hedefini temsil eder:

Görüntü alanından daha büyük olan kamera sınırlarını gösteren şema.

Harita, görüntü alanında tanımlanan sınırların dışında kalan alanlar gösterilse bile her zaman görüntü alanını doldurur. Örneğin, kamera hedefini sınırlı alanın bir köşesine konumlandırırsanız köşenin dışındaki alan, görüntü alanında görünür ancak kullanıcılar ekranı bu alana daha fazla kaydıramaz. Aşağıdaki şemada bu senaryo gösterilmektedir. Çarpım, kamera hedefini temsil eder:

Kamera hedefini, kamera sınırlarının sağ alt köşesinde konumlandırılmış şekilde gösteren şema.

Aşağıdaki şemada, kamera hedefinin sınırları çok kısıtlıdır ve bu nedenle kullanıcıya haritayı kaydırma veya kaydırma olanağı çok azdır. Çarpım, kamera hedefini temsil eder:

Görüntü alanından küçük kamera sınırlarını gösteren şema.

Minimum veya maksimum yakınlaştırmayı ayarlayın

kGMSMinZoomLevel ve kGMSMaxZoomLevel genel sabitleri, minimum veya maksimum yakınlaştırma değerlerini tanımlar. Varsayılan olarak, GMSMapView öğesinin minZoom ve maxZoom özellikleri bu sabit değerlere ayarlanmıştır.

Haritada kullanılabilen yakınlaştırma düzeyleri aralığını kısıtlamak için bir min. ve maksimum yakınlaştırma düzeyi belirleyin. Aşağıdaki kod, yakınlaştırma düzeyini 10 ile 15 arasında sınırlandırır.

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];
      

Yakınlaştırma aralığını, setMinZoom:maxZoom: yöntemiyle ayarlamanız gerekir ancak minZoom ve maxZoom özelliklerini kullanarak geçerli değerleri okuyabilirsiniz. Bu yaklaşım, değerlerden yalnızca birini kısıtlarken işe yarar. Aşağıdaki kod yalnızca minimum yakınlaştırma seviyesini değiştirir.

Swift

mapView.setMinZoom(12, maxZoom: mapView.maxZoom)
      

Objective-C

[mapView setMinZoom:12 maxZoom:mapView.maxZoom];
      

Min. ve maksimum yakınlaştırma güncellendikten sonra kameranın yakınlaştırma seviyesi yeni aralığın dışındaki bir değere ayarlanırsa geçerli yakınlaştırma, en yakın geçerli değeri gösterecek şekilde otomatik olarak güncellenir. Örneğin, aşağıdaki kodda orijinal yakınlaştırma değeri 4 olarak tanımlanmıştır. Yakınlaştırma aralığı daha sonra 10-15 olarak ayarlandığında, mevcut yakınlaştırma 10 olarak güncellenir.

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];