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ı kendi bağlamlarına göre faydalı bir yöne ayarlamak için yatırıp döndürebilir. Kullanıcılar, herhangi bir yakınlaştırma düzeyinde, çok az bir gecikmeyle haritayı kaydırabilir veya perspektifini değiştirebilir.

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

Harita görünümü

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

Kamera konumu

Harita görünümü, düz bir düzlemde aşağıya bakan bir kamera gibi modellenmiştir. Kameranın konumu (ve dolayısıyla haritanın oluşturulması) şu özelliklerle belirlenir: target (enlem/boylam konumu), bearing, tilt ve zoom.

Kamera özellikleri şeması

Hedef (yer)

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

Enlem, -85 ile 85 derece (bu değerler dahil) arasında olabilir. Bu aralığın üzerindeki veya altındaki değerler, aralık içindeki en yakın değere ayarlanır. Örneğin, enlemi 100 olarak ayarladığınızda değer 85 olarak ayarlanır. Boylam -180 ile 180 derece (bu değerler dahil) aralığındadır. Bu aralığın üzerindeki veya altındaki değerler, aralıkta (-180, 180) yer alacak şekilde sarmalanır. Örneğin, 480, 840 ve 1200 değerlerinin tamamı 120 dereceye ayarlanır.

Yönlendirme (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, yön, kameranın gerçek kuzey yönüne göre (derece cinsinden ölçülür) yönüne karşılık gelir.

Başlangıç noktası 0, haritanın üst kısmının gerçek kuzeyi gösterdiği anlamına gelir. Bitiş değeri 90, haritanın üst tarafı doğudan gelecek (pusulada 90 derece) anlamına gelir. 180 değeri, haritanın üst kısmı güneyde bulunan noktadır.

Google Haritalar API'sı bir haritanın yönünü değiştirmenize olanak tanır. Örneğin, araba kullanan bir kişi, seyahat yönüyle hizalamak için genellikle yol haritasını döndürürken, harita ve pusula kullanan yürüyüşçüler genellikle haritayı, dikey bir çizgi kuzeyi gösterecek şekilde yönlendirir.

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

Eğme, bir yay üzerinde kameranın konumunu doğrudan haritanın merkez konumu üzerinde tanımlar. Bu konum, nadirden (kameranın doğrudan altını gösteren yön) derece cinsinden ölçülür. 0 değeri, doğrudan aşağı doğru gösterilen kameraya karşılık gelir. 0'dan büyük değerler, belirtilen derece sayısı ile ufka doğru eğimli bir kameraya karşılık gelir. Görüntüleme açısını değiştirdiğinizde, harita perspektifte, uzaktaki özellikler daha küçük, yakındaki özellikler ise daha büyük görünür. Aşağıdaki resimlerde bu durum gösterilmektedir.

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

Kameranın 0 derece görüntüleme açısı, 18 yakınlaştırma düzeyinde ekran görüntüsü.
Harita, kameranın varsayılan görüntüleme açısıyla gösterilir.
Kameranın varsayılan konumunu, doğrudan harita konumu ü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 3. konuma gelecek şekilde, düz yukarıdan (0 derece) ve zemin (90 derece) arasında bir yay boyunca yarıya doğru hareket ettiğine dikkat edin. Kamera hâlâ haritanın merkez noktasını gösteriyor, ancak 4 konumundaki çizgiyle temsil edilen alan artık görünüyor.

45 derece görüntüleme açısında 18 yakınlaştırma düzeyinde kameraya sahip bir haritanın ekran görüntüsü.
Harita, 45 derece görüntüleme açısıyla görüntülenir.
Yakınlaştırma seviyesi hâlâ 18 iken kameranın görüntüleme açısının 45 dereceye ayarlandığını gösteren şema.
45 derecelik kamera görüntüleme açısı.

Bu ekran görüntüsündeki harita hâlâ orijinal haritadakiyle aynı noktanın ortasındadır, ancak haritanın üst kısmında daha fazla özellik görünmektedir. Açıyı 45 dereceden fazla artırdığınızda kamera ile harita konumu arasındaki özellikler orantılı olarak daha büyük görünürken harita konumu dışındaki özellikler de orantılı olarak daha küçük görünür ve üç boyutlu bir etki elde eder.

Tarih aralığını

Kameranın yakınlaştırma düzeyi, haritanın ölçeğini belirler. Daha büyük yakınlaştırma düzeylerinde ekranda daha fazla ayrıntı, daha düşük zum düzeylerinde ise ekranda dünyanın daha fazla kısmı görülebilir. Yakınlaştırma düzeyi 0 olduğunda, haritanın ölçeği, tüm dünyanın yaklaşık 256 nokta genişliğinde olacak şekildedir.

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

Yakınlaştırma düzeyinin tam sayı olması gerekmez. Haritanın izin verdiği yakınlaştırma seviyeleri; hedef, harita türü ve ekran boyutu gibi çeşitli faktörlere bağlıdır. Aralığın dışındaki herhangi bir sayı, en yakın geçerli değere dönüştürülür. Bu değer, minimum veya maksimum yakınlaştırma düzeyi olabilir. 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 düzeylerinin görsel görünümü gösterilmektedir:
5 yakınlaştırma düzeyindeki bir haritanın ekran görüntüsü
5. yakınlaştırma düzeyindeki bir harita.
15 yakınlaştırma düzeyindeki bir haritanın ekran görüntüsü
15. yakınlaştırma düzeyinde bir harita.
20. yakınlaştırma düzeyindeki bir haritanın ekran görüntüsü
20. yakınlaştırma seviyesindeki bir harita.

İlk kamera konumunu ayarla

GMSCameraPosition nesnesini kullanarak ilk kamera konumunu ayarlayın. Bu nesne; yön, yatırma ve yakınlaştırmanın yanı sıra hedefin enlem ve boylamını da ayarlamanıza olanak tanır.

İlk kamera konumunu ayarlamak için bir GMSMapViewOptions nesnesi oluşturun ve camera özelliğini GMSCameraPosition olarak ayarlayın. Daha sonra, seçeneklerinizi GMSMapView kolaylık oluşturucuya 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 konumdan başlar ve 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

Konumu, yönü, yatırmayı ve yakınlaştırmayı ayarlamak için kamera konumunu programlı bir şekilde değiştirebilirsiniz. GMSMapView, kamera konumunu değiştirmek için kullanabileceğiniz çeşitli yöntemler sunsa da genellikle GMSCameraPosition veya GMSCameraUpdate yöntemini kullanırsınız:

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

  • GMSCameraUpdate hedef, konum, yatırma 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ırlar içinde ortalamayı ve daha fazlasını destekleyen ek kolaylık yöntemleri içerir.

Kamerayı hareket ettirdiğinizde, kamerayı yeni konuma "tutturmayı", yani animasyon olmamasını veya hareketi canlandırmayı seçebilirsiniz. Örneğin, kameranın hedef konumunda bir değişikliği canlandırırsanız animasyon, önceki konumdan yenisine kaydırılır.

Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında interpolasyon yapar. Animasyonun süresini Temel Animasyon'u kullanarak 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 nesnesinde ayarlarsınız. Kamerayı yeni konuma animasyonlu 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 bir 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şlemini canlandırmak için camera özelliğini ayarlamak yerine animateToCameraPosition: yöntemini kullanın.

GMSCameraUpdate hareketini kullanın

GMSCameraUpdate, kamera konumunu güncellemenize ve yeni konuma tutturma veya animasyon ekleme arasında seçim yapmanıza olanak tanır. GMSCameraUpdate avantajı kolaylıktır. GMSCameraUpdate ile aynı görevleri gerçekleştirmek için GMSCameraPosition aracını kullanabilirsiniz ancak GMSCameraUpdate, kamerayı yönetmeyi kolaylaştırmak için ek yardımcı yöntemler sunar.

Örneğin, geçerli yakınlaştırma düzeyini artırmak amacıyla GMSCameraPosition kullanmak için önce geçerli 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 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 takmak için GMSMapView moveCamera: yöntemini kullanın.

Bir sonraki örnekte, kameranın hareketini canlandırmak için GMSCameraUpdate kullanarak Vancouver'ı ortalamak istiyorsunuz.

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 oranında değiştirmek.
zoomTo:
Yakınlaştırma düzeyini verilen değerle değiştirirken diğer tüm özellikleri aynı tutar.
zoomBy:
Yakınlaştırma düzeyini belirtilen değere göre 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 düşürür).
setTarget:
Diğer tüm özellikleri korurken kameranın enlem ve boylamını değiştirir.
setTarget:zoom:
Kameranın enlem, boylam ve yakınlaştırma ayarlarını değiştirirken diğer tüm özellikleri korur.
setCamera:
Yeni bir GMSCameraPosition ayarlar.
scrollByX:Y:
Haritayı belirtilen nokta sayısı kadar 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 etmesine neden olarak harita sola gitmiş gibi görünür. Pozitif bir y değeri, kameranın aşağı hareket etmesine, dolayısıyla haritanın yukarı çıkmış gibi görünmesine neden olur. Kaydırma, kameranın yönüyle ilgilidir. Örneğin, kameranın yönü 90 dereceyse doğu yönü "yukarı"dır.
fitBounds:
Kamerayı, ekrandaki 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 punto sınırına varsayılan bir dolgu uygular.
fitBounds:withPadding:
Kamerayı, ekrandaki 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ırlayıcı kutunun tüm kenarları için nokta olarak aynı dolguyu belirtmek üzere bu yöntemi kullanın.
fitBounds:withEdgeInsets:
Kamerayı, ekrandaki 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 ile dolguyu sınırlayıcı kutunun her bir kenarı için ayrı ayrı belirtirsiniz.

Tek bir özelliği değiştirmek için GMSMapView kullanma

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 özelliğinde değişikliği canlandırabilirsiniz.

Örneğin, kamera eğmesinde 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 programatik olarak CLLocationCoordinate2DMake ile oluşturulan bir CLLocationCoordinate2D ile gösterilir.

Konumu değiştirmek için GMSCameraPosition öğesini kullanın. Bu örnekte, harita yeni konuma yapıştırılır.

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. Dilerseniz 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. Kameranın X ve Y yönlerinde kaydırılacağı nokta sayısını belirtmek için yerleşik yöntemi scrollByX:Y: kullanın. Bu örnekte, kamerayı 200 nokta sağa ve 100 nokta aşağı kaydırırsınız:

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önlendirmeyi (yön) ayarlayın

yön, haritanın üst kenarı için gerçek kuzeyden derece cinsinden ölçülen pusula yönüdür. Örneğin, yön 90 derece, üst kenarın doğuya işaret ettiği bir haritayla sonuçlanır.

Yönlendirmeyi GMSCameraPosition veya GMSCameraUpdate ile ya da GMSMapView öğesinin animateToBearing: yöntemiyle programlı olarak ayarlayın.

Swift

mapView.animate(toBearing: 0)
      

Objective-C

[mapView animateToBearing:0];
      

Eğme ayarlama (görüntüleme açısı)

Görüntüleme açısı, kameranın bir yay üzerinde, doğrudan haritanın merkez konumu ile Dünya yüzeyi arasındaki konumudur. Bu konum, nadirden (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, kamera ile harita konumu arasındaki özellikler orantılı olarak daha büyük olacak şekilde ve harita konumu dışındaki özellikler de orantısal olarak daha küçük olacak şekilde, perspektifte görünür ve üç boyutlu bir etki yaratır.

Görüntüleme açısı 0 (tam haritayı işaret edecek şekilde) ile yakınlaştırma düzeyine bağlı bir maksimum değere kadar değişebilir. Yakınlaştırma düzeyi 16 veya daha yüksek olduğunda maksimum açı 65 derecedir. Yakınlaştırma düzeyi 10 veya daha düşük olduğunda maksimum açı 30 derecedir.

Görüntüleme açısını GMSCameraPosition veya GMSCameraUpdate kullanarak ya da GMSMapView adlı animateToViewingAngle: yöntemi ile programatik olarak 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. Daha yüksek yakınlaştırma düzeylerinde ekranda daha fazla ayrıntı, daha düşük yakınlaştırma düzeylerinde ise daha fazla yer görebilirsiniz.

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

Swift

mapView.animate(toZoom: 12)
      

Objective-C

[mapView animateToZoom:12];
      

Aşağıdaki örnekte, mevcut düzeyden bir düzey yakınlaştırma animasyonu yapmak üzere 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ı, ilgilenilen alanın tamamını mümkün olan en büyük yakınlaştırma düzeyinde görünecek ş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 en fazla beş kilometre uzaklıktaki tüm benzin istasyonlarını görüntülemek istiyorsanız kamerayı tümünün ekranda görülebileceği ş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 öğesinin tamamen mevcut haritanın boyutuna uymasını sağlar. Bu yöntemin, haritanın eğimini ve açısını 0 olarak 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ırma işlevini belirli bir alanla sınırlandırma

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

Örneğin, bir alışveriş merkezine veya havaalanına yönelik bir perakende uygulaması, haritayı belirli sınırlarla sınırlamak ve böylece kullanıcıların bu sınırlar dahilinde kaydırmak için kaydırma yapmasını sağlamak 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 nesnesine ayarlayın. Daha sonra kısıtlamayı kaldırmak için cameraTargetBounds değerini boş 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. Kullanıcı, kamera hedefinin sınırlı alan içinde kalması şartıyla ekranı kaydırıp kaydırabilir. Artı işareti, kamera hedefini temsil eder:

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

Harita, görüntü alanının tanımlanan sınırların dışında kalan alanları göstermesine neden olsa bile, görüntü alanını her zaman doldurur. Örneğin, kamera hedefini sınırlı alanın bir köşesine konumlandırırsanız köşenin ötesindeki alan görüntü alanında görünür, ancak kullanıcılar bu alanın içine daha fazla kaydıramaz. 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 kamera hedefini gösteren şema.

Aşağıdaki şemada, kamera hedefinin sınırları son derece kısıtlıdır ve bu da kullanıcıya haritayı kaydırmak veya kaydırmak için çok az fırsat sunmaktadır. Artı işareti, 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 ayarlama

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

Haritanın erişebildiği yakınlaştırma düzeyleri aralığını sınırlandırmak için bir min. ve maksimum yakınlaştırma seviyeleri ayarlayın. Aşağıdaki kod, yakınlaştırma düzeyini 10 ve 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 düzeyini değiştirir.

Swift

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

Objective-C

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

Minimum ve maksimum yakınlaştırma değerleri güncellendikten sonra kameranın yakınlaştırma düzeyi, yeni aralığın dışındaki bir değere ayarlanırsa mevcut 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 değerine ayarlandığında mevcut yakınlaştırma değeri 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];