Kamera ve görünüm

Platformu seçin: Android iOS JavaScript

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

iOS için Haritalar SDK'sı sayesinde kullanıcılarınız, haritalarını bağlam için faydalı bir yöne doğru ayarlamak üzere yatırabilir ve döndürebilir. Herhangi bir yakınlaştırma düzeyinde, kullanıcılar haritayı kaydırabilir veya çok az gecikmeyle perspektifini değiştirebilir.

Kamera üzerinde yapılan değişiklikler, işaretçileri, çoklu çizgileri veya eklediğiniz diğer grafikleri değiştirmez. Bununla birlikte, bu eklemeleri yeni görünüme daha uygun olacak şekilde değiştirmek isteyebilirsiniz.

Haritanın görünümü

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

Kamera konumu

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

Kamera özellikleri şeması

Hedef (konum)

Kamera hedefi, enlem ve boylam koordinatları olarak belirtilen, harita merkezinin bulunduğu konumdur.

Enlem, -85 ile 85 derece arasında (bu değerler dahil) olabilir. Bu aralığın üstündeki veya altındaki değerler, bu aralıktaki en yakın değere sabitlenir. Örneğin, 100'lük bir enlem değeri 85 olarak ayarlanır. Boylamlar -180 ve 180 derece arasında değişir. Bu aralığın üstündeki veya altındaki değerler, (-180, 180) aralığına denk gelecek şekilde sarmalanır. Örneğin 480, 840 ve 1200, 120 dereceye sarmalanır.

Taşınma (yön)

Kamera yönü, gerçek kuzey yönünden haritanın üst kenarına karşılık gelen pusula yönünü belirtir. Haritanın ortasından üst kenarına kadar bir dikey çizgi çizerseniz, pozisyon, kuzeydeki gerçek kuzeye göre kamera başlığına (derece cinsinden) karşılık gelir.

0 konumu, haritanın üst bölümünün doğru kuzeyi işaret ettiği anlamına gelir. 90 değeri değeri, doğudaki harita noktalarının üst kısmı (pusulada 90 derece) anlamına gelir. Değer 180, güneydeki harita noktalarının üst kısmıdır.

Maps API, bir konumun konumunu değiştirmenize olanak tanır. Örneğin, sıklıkla araba kullanan biri, bir yol haritasını seyahat yönüyle uyumlu olacak şekilde dönüştürürken, yürüyüşçüler genellikle harita kullanır ve pusula kuzeye işaret eder.

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

Eğme, kameranın konumunu bir kemerin doğrudan haritadaki konumunun üzerinde tanımlar ve nadir özelliğinin kameranın hemen altında olduğunu gösterir. 0 değeri, hemen aşağıyı gösteren bir kameraya karşılık gelir. 0'dan büyük değerler, belirtilen derece cinsinden ufuğa doğru yerleştirilmiş bir kameraya karşılık gelir. Görüntüleme açısını değiştirdiğinizde harita, uzak özellikler daha küçük, yakındaki özellikler ise daha büyük görünür. Aşağıdaki çizimler bunu göstermektedir.

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

Kameranın 0 derece görüntüleme açısında ve 18 yakınlaştırma düzeyinde yerleştirildiği 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 derece 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, yay üzerinde düz bir şekilde yukarıdan (0 derece) ve yerden (90 derece) 3 konuma geleceğine dikkat edin. Kamera hâlâ haritanın merkez noktasını işaret ediyor ancak çizginin 4. konumunda temsil ettiği alan artık görünür.

Kameranın 45 derece görüntüleme açısında, 18 yakınlaştırma düzeyinde yerleştirilmiş bir haritasının ekran görüntüsü.
Harita 45 derece görüntüleme açısıyla gösteriliyor.
Kameranın görüş açısının 45 dereceye, yakınlaştırma düzeyinin ise 18'e ayarlanmasını gösteren şema.
45 derece açı kamera.

Bu ekran görüntüsündeki harita, orijinal haritadakiyle aynı noktada ortalanmaktadır, ancak haritanın üst kısmında daha fazla özellik görünmektedir. Açı 45 dereceden yüksek olduğunda, kamera ile harita konumu arasındaki özellikler orantılı olarak daha büyük görünürken harita konumu ötesindeki özellikler orantılı olarak daha küçük görünür ve üç boyutlu efekt oluşturur.

Tarih aralığını

Kameranın yakınlaştırma düzeyi haritanın ölçeğini belirler. Büyük yakınlaştırma düzeylerinde ekranda daha fazla ayrıntı, daha küçük yakınlaştırma düzeylerinde ise dünyanın daha büyük bir kısmı görülebilir. Yakınlaştırma düzeyi 0'da haritanın ölçeği, tüm dünyanın yaklaşık 256 nokta genişliğinde olacağı şekilde ayarlanır.

Yakınlaştırma düzeyini 1 artırmak, ekranın dünya genişliğini iki katına çıkarır. Dolayısıyla, yakınlaştırma düzeyi N'de dünyanın genişliği yaklaşık 256 * 2N noktadır. Örneğin, 2. yakınlaştırma düzeyinde, tüm dünya yaklaşık 1.024 nokta genişliğindedir.

Yakınlaştırma düzeyi bir tam sayı olmamalıdır. Haritanın izin verdiği yakınlaştırma düzeyleri aralığı; hedef, harita türü ve ekran boyutu gibi bir dizi faktöre bağlıdır. Aralık dışındaki herhangi bir sayı, bir sonraki en yakın geçerli değere dönüştürülür. Bu da minimum yakınlaştırma veya maksimum yakınlaştırma düzeyi olabilir. Aşağıdaki listede, her 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 düzeylerinin görsel görünümü gösterilmektedir:
Bir haritanın 5 derecede yakınlaştırma düzeyinde ekran görüntüsü
Yakınlaştırma düzeyi 5'te bir harita.
15 yakınlaştırma düzeyinde bir haritanın ekran görüntüsü
15. yakınlaştırma düzeyindeki bir harita.
Yakınlaştırma düzeyi 20'de bir haritanın ekran görüntüsü
Yakınlaştırma düzeyi 20'de bir harita.

Başlangıçtaki kamera konumunu belirleyin

İlk kamera konumunu ayarlamak için GMSCameraPosition nesnesini kullanın. Bu nesne, yönü, eğimi ve yakınlaştırmayı kullanarak hedefin enlem ve boylamını ayarlamanıza olanak tanır.

İlk kamera konumunu ayarlamak için bir GMSCameraPosition nesnesi oluşturun ve bu nesneyi GMSMapView kullanışlı oluşturucuya iletin.

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

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

Swift

mapView = GMSMapView(frame: self.view.bounds)
      

Objective-C

mapView = [[GMSMapView alloc] initWithFrame:self.view.bounds];
      

Kamera konumunu değiştirin

Konumu, konumu, yatmayı ve yakınlaştırmayı ayarlamak için kamera konumunu programatik olarak değiştirebilirsiniz. GMSMapView, kamera konumunu değiştirmek için kullanabileceğiniz çeşitli yöntemler sunarken genellikle GMSCameraPosition veya GMSCameraUpdate kullanılır:

  • GMSCameraPosition her kamera konumu parametresini değiştirmek için kullandığınız özellikleri ve yöntemleri içerir: hedef, yatak, eğme ve yakınlaştırma.

  • GMSCameraUpdate; hedef, yatak, eğim ve yakınlaştırmayı değiştirmenize olanak tanır. Ayrıca kaydırma, gelişmiş yakınlaştırma, kamerayı önceden tanımlanmış sınırlara göre ortalama ve diğer özellikleri desteklemek için ek kolaylık yöntemleri de içerir.

Kamerayı hareket ettirdiğinizde kamerayı yeni konuma "yakalamayı", yani animasyon olmadığını veya hareketin animasyonunu seçebilirsiniz. Örneğin, kameranın hedef konumunda bir değişikliği canlandırırsanız animasyon eski konumdan yenisine kaydırılır.

Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında geçiş yapabilir. Temel Animasyonu 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 nesnesine ayarlarsınız. Kamerayı animasyonla veya animasyon olmadan yeni konuma oturtmak için GMSCameraPosition nesnesini kullanın.

Enlem, boylam, yakınlaştırma, duruş ve görüntüleme açısı gibi kamera özelliklerini yapılandırmak için bir GMSCameraPosition nesnesi kullanın. Daha sonra, bu nesneyi GMSMapView özelliğinin 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 mülklerini çıkarın.

Taşıma işleminin animasyonunu oluşturmak için camera özelliğini ayarlamak yerine animateToCameraPosition: yöntemini kullanın.

GMSCameraUpdate hareketini kullanın

GMSCameraUpdate kullanarak kamera konumunu güncelleyebilir ve yeni konuma tutturma veya animasyon ekleme seçimini yapabilirsiniz. GMSCameraUpdate, kullanım kolaylığıdır. GMSCameraUpdate ile aynı görevleri gerçekleştirmek için GMSCameraPosition özelliğini kullanabilirsiniz ancak GMSCameraUpdate, kamerayı değiştirmeyi kolaylaştırmak için ek yardımcı yöntemler sağlar.

Örneğin, geçerli yakınlaştırma düzeyini artırmak amacıyla GMSCameraPosition özelliğini kullanmak için önce mevcut yakınlaştırma düzeyini belirlemeniz, ardından yakınlaştırmayı geçerli yakınlaştırmadan daha büyük bir değere ayarlamanız için bir GMSCameraPosition nesnesi oluşturmanız gerekir.

Alternatif olarak, zoomIn: yöntemiyle bir GMSCameraUpdate nesnesi oluşturun. Daha sonra, 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 sabitlemek için GMSMapView moveCamera: yöntemini kullanın.

Bir sonraki örnekte, kamerayı Vancouver'da ortalamak için bir hareket hareketine animasyon eklemek için GMSCameraUpdate etiketini 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 mevcut yakınlaştırma düzeyini 1, 0 değiştirin.
zoomTo:
Yakınlaştırma düzeyini belirtilen değere değiştirirken diğer tüm özellikleri aynı tutar.
zoomBy:
Yakınlaştırma oranını belirtilen değerde artırır (veya değer negatifse azaltır).
zoomBy:atPoint:
Belirtilen noktanın ekrandaki konumunu korurken yakınlaştırma düzeyini belirtilen değere göre artırır (veya değer negatifse azaltır).
setTarget:
Kameranın enlem ve boylamını değiştirirken diğer tüm özellikleri korur.
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 bir x değeri, kameranın sağa doğru hareket etmesini sağlar. Böylece, harita sola taşınmış gibi görünür. Pozitif bir y değeri, kameranın aşağı hareket etmesine neden olur. Böylece harita yukarı hareket eder. Kaydırma, kameranın mevcut konumuna göre yapılır. Örneğin, kamera 90 derece yataktaysa doğu "yukarı"dır.
fitBounds:
Kamerayı, belirtilen sınırları mümkün olan en yüksek yakınlaştırma düzeyinde ortalamak için dönüştürür. 64 noktanın sınırlarına varsayılan bir dolgu uygular.
fitBounds:withPadding:
Kamerayı, belirtilen sınırları mümkün olan en yüksek yakınlaştırma düzeyinde ortalamak için dönüştürür. Sınırlama kutusunun tüm yanları için noktalarda aynı dolguyu belirtmek üzere bu yöntemi kullanın.
fitBounds:withEdgeInsets:
Kamerayı, belirtilen sınırları mümkün olan en yüksek yakınlaştırma düzeyinde ortalamak için dönüştürür. UIEdgeInsets sayesinde sınırlayıcı kutunun her kenarı için bağımsız olarak dolgu belirtebilirsiniz.

Tek bir mülkü değiştirmek için GMSMapView özelliğini kullanın

GMSMapView, GMSCameraPosition veya GMSCameraUpdate nesnesi kullanmadan kamerayı hareket ettirmenizi sağlayan çeşitli yöntemler sunar. animateToLocation: veya animateToZoom: gibi bu yöntemlerle tek bir kamera mülküne geçiş yapabilirsiniz.

Ö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 boylam ile belirtilir ve programatik olarak CLLocationCoordinate2DMake ile oluşturulan bir CLLocationCoordinate2D ile temsil edilir.

Konumu değiştirmek için GMSCameraPosition özelliğini kullanın. Bu örnekte, harita yeni konuma yeriyor.

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 animasyonlu hale getirmek ve haritayı yeni konuma kaydırmak için camera özelliğini ayarlamak yerine animateToCameraPosition: yöntemini kullanabilirsiniz. İsterseniz GMSMapView üzerindeki 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ıracak nokta sayısını belirtmek için yerleşik scrollByX:Y: yöntemini kullanın. Bu örnekte, kamerayı 200 nokta sağa, 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];
      

Yatağı ayarla (yön)

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 pozisyon, üst kenarın doğuya doğru geleceği bir haritada sonuç verir.

Rulumu, GMSCameraPosition veya GMSCameraUpdate ile programatik olarak veya animateToBearing: GMSMapView 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 doğrudan yay üzerinde uzanan Dünya yüzeyi ile Dünya yüzeyi arasındaki yay üzerinde nadir derecesinden (kameranın hemen altına doğru uzanan yön) derece cinsinden ölçülen konumudur. Görüntüleme açısını değiştirdiğinizde, harita perspektif olarak görünür. Kamera ile harita konumu arasındaki oran 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ünerek üç boyutlu bir efekt oluşturur.

Görüntüleme açısı 0 (düzeye doğru aşağı doğru işaret etme) ve yakınlaştırma düzeyinde bağımlı maksimum değere kadar bir aralık olabilir. Yakınlaştırma düzeyi 16 ve üzeri için maksimum açı 65 derecedir. Yakınlaştırma düzeyi 10 ve altı için maksimum açı 30 derecedir.

Görüntüleme açısını GMSCameraPosition veya GMSCameraUpdate kullanarak programatik olarak veya animateToViewingAngle: GMSMapView yöntemiyle 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. Büyük yakınlaştırma düzeylerinde ekranda daha fazla ayrıntı, daha küçük yakınlaştırma düzeylerinde ise dünyayla ilgili daha fazla ayrıntı görebilirsiniz.

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

Swift

mapView.animate(toZoom: 12)
      

Objective-C

[mapView animateToZoom:12];
      

Aşağıdaki örnekte, yakınlaştırma mevcut düzeyden bir seviye artırarak canlandırmak için bir GMSCameraUpdate nesnesi oluşturmak amacıyla 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ı belirlemek

Kamerayı, ilgilendiğiniz bir alanın tamamı mümkün olan en yüksek yakınlaştırma düzeyinde görünecek şekilde taşımak için, kamera görünümünün sınırlarını belirleyin. Örneğin, kullanıcının bulunduğu konuma en fazla beş kilometre uzaklıkta bulunan tüm benzin istasyonlarını görüntülemek istiyorsanız, kamerayı hareket edenlerin tümü ekranda görünecek şekilde hareket ettirin:

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

Bu sınırların ayarlanması, GMSCoordinateBounds öğesinin tamamen mevcut haritanın boyutuna uymasını sağlar. Bu yöntemin, haritayı yatırarak eğimi 0 olarak ayarladığını unutmayın.

Aşağıdaki örnekte, Vancouver ve Calgary'nin şehirlerinin aynı görünümde gösterilmesi 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ırma özelliğini belirli bir alanla kısıtlama

Yukarıdaki senaryolarda, haritanın sınırlarını ayarlarsınız, ancak kullanıcı bu sınırların dışına kaydırılabilir veya kaydırabilir. Bunun yerine, kullanıcıların yalnızca kaydırma yapabildiği ve kaydırabileceği şekilde, haritanın odak noktasının (kamera hedefi) enlem/boylam uzunluğunun sınırlarını sınırlandırabilirsiniz.

Örneğin, bir alışveriş merkezi veya havaalanıyla ilgili bir perakende uygulaması, haritayı belirli sınırlarla sınırlandırarak kullanıcıların bu sınırlar içinde kaydırma ve kaydırma yapmasını sağlayabilir.

Kaydırma işlemini belirli sınırlarla kısıtlamak için GMSMapView öğesinin cameraTargetBounds özelliğini, gerekli sınırları tanımlayan bir GMSCoordinateBounds nesnesine ayarlayın. Kısıtlamayı daha sonra kaldırmak için cameraTargetBounds özelliğini sıfır 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ırlı olduğu bir senaryo gösterilmektedir. Kamera hedefinin sınırlı alan içinde kalması koşuluyla kullanıcı ekranı kaydırabilir ve kaydırabilir. Çapraz çizgi, kamera hedefini temsil eder:

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

Görüntü alanı, belirlenen sınırların dışındaki alanların gösterilmesiyle sonuçlansa bile, harita 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 bu alana ilerleyemez. Aşağıdaki şemada bu senaryo gösterilmektedir. Artı işareti, kamera hedefini temsil eder:

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

Aşağıdaki şemada kamera hedefinin sınırları çok sınırlıdır ve kullanıcıya sayfayı kaydırmak veya kaydırmak için çok az fırsat sunar. Çapraz çizgi, kamera hedefini temsil eder:

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

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

Genel sabit değerler kGMSMinZoomLevel ve kGMSMaxZoomLevel, minimum veya maksimum yakınlaştırma değerlerini tanımlar. GMSMapView kapsamındaki minZoom ve maxZoom özellikleri varsayılan olarak bu sabit değerlere ayarlanır.

Haritada kullanılabilen yakınlaştırma düzeyi aralığını kısıtlamak için min. ve maks. yakınlaştırma düzeyi ayarlayın. 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 faydalı olabilir. Aşağıdaki kod yalnızca minimum yakınlaştırma düzeyini değiştirir.

Swift

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

Objective-C

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

Min. ve maks. yakınlaştırma güncellendikten sonra, kameranın yakınlaştırma düzeyi yeni aralığın dışında 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 4 olarak tanımlanmıştır. Yakınlaştırma aralığı daha sonra 10-15 olarak ayarlandığında, geçerli 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];