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 haritaya bakış açısını değiştirebilirsiniz.

iOS için Haritalar SDK'sı ile kullanıcılarınız, haritalarınızı kendi bağlamlarına uygun bir yöne ayarlamak için eğebilir ve döndürebilir. Kullanıcılar, herhangi bir yakınlaştırma düzeyinde haritayı çok az gecikmeyle kaydırabilir veya perspektifini değiştirebilir.

Kamerada yapılan değişiklikler, eklediğiniz işaretleri, ç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ı, dünyanın yüzeyini (bir küre) cihazınızın ekranında (düz bir düzlem) göstermek için Mercator projeksiyonunu kullanır.

Kamera konumu

Harita görünümü, düz bir düzleme yukarıdan bakan bir kamera olarak modellenir. Kameranın konumu (ve dolayısıyla haritanın oluşturulması) şu özelliklerle belirtilir: target (enlem/boylam konumu), bearing, tilt ve zoom.

Kamera özellikleri diyagramı

Hedef (konum)

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

Enlem -85 ile 85 derece arasında (bu değerler dahil) olabilir. Bu aralığın üzerindeki veya altındaki değerler, bu aralıktaki en yakın değere sabitlenir. Örneğin, 100 enlemini belirtmek değeri 85 olarak ayarlar. Boylam, -180 ile 180 derece arasında (bu değerler dahil) olmalıdır. Bu aralığın üstündeki veya altındaki değerler, aralığa (-180, 180) girecek şekilde sarmalanır. Örneğin, 480, 840 ve 1200 değerleri 120 dereceye sarılı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 üst kenarına dikey bir çizgi çizdiğinizde, kerteriz, kameranın gerçek kuzeye göre yönüne (derece cinsinden ölçülür) karşılık gelir.

0 değeri, haritanın üst kısmının gerçek kuzeyi gösterdiği anlamına gelir. 90 değeri, haritanın üst kısmının tam doğuyu (pusulada 90 derece) gösterdiği anlamına gelir. 180 değeri, haritanın üst kısmının güneye doğru olduğunu gösterir.

Maps API, bir haritanın yönünü değiştirmenize olanak tanır. Örneğin, araba kullanan biri genellikle yol haritasını seyahat yönüyle aynı olacak şekilde çevirir. Harita ve pusula kullanan yürüyüşçüler ise genellikle haritayı dikey bir çizgi kuzeyi gösterecek şekilde yönlendirir.

Eğme (görüş açısı)

Eğim, kameranın haritanın merkez konumunun doğrudan üzerinde bulunan bir yay üzerindeki konumunu tanımlar. Bu konum, nadir noktasından (kameranın doğrudan altını gösteren yön) itibaren derece cinsinden ölçülür. 0 değeri, doğrudan aşağıyı gösteren bir kameraya karşılık gelir. 0'dan büyük değerler, belirtilen derece sayısı kadar ufka doğru eğilmiş bir kameraya karşılık gelir. Görüş açısını değiştirdiğinizde harita perspektifli 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 durum gösterilmektedir.

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

Görüş açısı 0 derece, yakınlaştırma seviyesi 18 olan bir kameranın konumlandırıldığı haritanın 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 konumunun üzerinde 0 derecelik 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 konumuna gelmek için doğrudan yukarı (0 derece) ile yer (90 derece) arasındaki bir yay boyunca yarıya kadar hareket ettiğini unutmayın. Kamera, haritanın odak noktasına doğru bakmaya devam ediyor ancak 4 konumundaki çizgiyle gösterilen alan artık görünür durumda.

45 derecelik görüş açısıyla ve 18 yakınlaştırma seviyesinde konumlandırılmış bir kameranın bulunduğu haritanın ekran görüntüsü.
45 derecelik bir görüntüleme açısıyla gösterilen harita.
Kameranın görüntüleme açısının 45 dereceye ayarlandığını ve yakınlaştırma düzeyinin 18 olarak kaldığını gösteren şema.
45 derecelik bir kamera görüntüleme açısı.

Bu ekran görüntüsündeki harita, orijinal haritadakiyle aynı noktaya odaklanmaya devam ediyor ancak haritanın üst kısmında daha fazla özellik gösteriliyor. Açıyı 45 derecenin üzerine çıkardığınızda kamera ile harita konumu arasındaki özellikler orantılı olarak daha büyük, harita konumunun ötesindeki özellikler ise orantılı olarak daha küçük görünür ve üç boyutlu bir efekt elde edilir.

Tarih aralığını

Kameranın yakınlaştırma seviyesi, haritanın ölçeğini belirler. Daha yüksek yakınlaştırma seviyelerinde ekranda daha fazla ayrıntı görülebilirken daha düşük yakınlaştırma seviyelerinde ekranda daha fazla yer görülebilir. Yakınlaştırma seviyesi 0 olduğunda haritanın ölçeği, tüm dünyanın yaklaşık 256 puan 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 seviyesinde dünyanın genişliği yaklaşık 256 * 2N noktadır. Örneğin, 2. yakınlaştırma seviyesinde tüm dünya yaklaşık 1.024 nokta genişliğindedir.

Yakınlaştırma seviyesi tam sayı olmak zorunda değildir. Haritanın izin verdiği yakınlaştırma düzeyleri, hedef, harita türü ve ekran boyutu gibi çeşitli faktörlere bağlıdır. Aralık dışındaki tüm sayılar, bir sonraki en yakın geçerli değere (minimum veya maksimum yakınlaştırma seviyesi) dönüştürülür. Aşağıdaki listede, her bir yakınlaştırma seviyesinde görmeyi bekleyebileceğiniz yaklaşık ayrıntı düzeyi gösterilmektedir:

  • 1: Dünya
  • 5: Ana kara/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 seviyesindeki bir haritanın ekran görüntüsü
5. yakınlaştırma seviyesindeki bir harita.
15 yakınlaştırma seviyesindeki bir haritanın ekran görüntüsü
15. yakınlaştırma seviyesinde bir harita.
20 yakınlaştırma seviyesinde bir haritanın ekran görüntüsü
20. yakınlaştırma seviyesinde bir harita.

İlk kamera konumunu ayarlama

Hedefin enlemini ve boylamını, yön, eğim ve yakınlaştırma ile birlikte ayarlamanıza olanak tanıyan GMSCameraPosition nesnesini kullanarak ilk kamera konumunu ayarlayın.

Başlangıçtaki kamera konumunu ayarlamak için GMSMapViewOptions nesnesi oluşturun ve camera özelliğini 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 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ştirme

Konumu, yönü, eğimi 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 sunsa da genellikle GMSCameraPosition veya GMSCameraUpdate kullanılır:

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

  • GMSCameraUpdate Hedefi, yönü, eğimi 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 ortalama gibi işlemleri destekleyen ek kolaylık yöntemleri de içerir.

Kamerayı hareket ettirdiğinizde, kamerayı yeni konuma "oturtmayı" (yani animasyon olmaması) veya hareketi animasyonla göstermeyi seçebilirsiniz. Örneğin, kameranın hedef konumunda bir değişikliği canlandırırsanız animasyon, önceki konumdan yeni konuma doğru kaydırılır.

Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında enterpolasyon yapar. Animasyonun süresini Core Animation ile 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 yerleştirirsiniz. Kamerayı animasyonlu veya animasyonsuz olarak yeni konuma sabitlemek için GMSCameraPosition nesnesini kullanın.

Enlem, boylam, yakınlaştırma, yön ve görüş açısı gibi kamera özelliklerini yapılandırmak için GMSCameraPosition nesnesini kullanın. Ardından, GMSMapView öğesinin camera özelliğini ayarlamak için bu nesneyi 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 tüm GMSCameraPosition özelliklerini atlayın.

Hareketi canlandırmak 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 geçişin anlık mı yoksa animasyonlu mu olacağını seçmenize olanak tanır. GMSCameraUpdate kullanmanın avantajı kolaylık sağlamasıdır. GMSCameraPosition ile GMSCameraUpdate ile aynı görevleri gerçekleştirebilirsiniz ancak GMSCameraUpdate, kamerayı kullanmayı kolaylaştırmak için ek yardımcı yöntemler sağlar.

Örneğin, geçerli yakınlaştırma seviyesini artırmak için GMSCameraPosition öğesini kullanmak istiyorsanız önce geçerli yakınlaştırma seviyesini belirlemeniz, ardından yakınlaştırmayı geçerli yakınlaştırma seviyesinden bir fazla değere ayarladığı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 ileterek 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, kameranın Vancouver'a odaklanacak şekilde hareketini canlandırmak için GMSCameraUpdate 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ı tutarak geçerli yakınlaştırma seviyesini 1, 0 değiştirin.
zoomTo:
Diğer tüm özellikler aynı kalırken yakınlaştırma seviyesini belirtilen değere değiştirir.
zoomBy:
Yakınlaştırma seviyesini, belirtilen değer kadar artırır (değer negatifse azaltır).
zoomBy:atPoint:
Belirtilen noktanın ekrandaki konumunu korurken yakınlaştırma düzeyini verilen değer kadar artırır (veya değer negatifse azaltır).
setTarget:
Diğer tüm özellikleri korurken kameranın enlemini ve boylamını değiştirir.
setTarget:zoom:
Diğer tüm özellikleri korurken kameranın enlemini, boylamını ve yakınlaştırmasını değiştirir.
setCamera:
Yeni bir GMSCameraPosition ayarlar.
scrollByX:Y:
Haritayı belirtilen nokta sayısı kadar hareket ettirmek için kameranın enlemini ve boylamını değiştirir. Pozitif bir x değeri, kameranın sağa hareket etmesine neden olur. Bu nedenle, harita sola hareket etmiş gibi görünür. Pozitif bir y değeri, kameranın aşağı hareket etmesine neden olur. Bu nedenle harita yukarı hareket etmiş gibi görünür. Kaydırma, kameranın mevcut yönüne göre yapılır. Örneğin, kamera 90 derece yönündeyse doğu "yukarı"dır.
fitBounds:
Kamerayı, belirtilen sınırları ekranda mümkün olan en yüksek yakınlaştırma düzeyinde ortalayacak şekilde dönüştürür. Sınırlara 64 puanlık 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 ekranda 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ı, belirtilen sınırları mümkün olan en yüksek yakınlaştırma düzeyinde ekranda ortalayacak şekilde dönüştürür. UIEdgeInsets ile sınırlayıcı kutunun her kenarı için ayrı ayrı dolgu belirtirsiniz.

Tek bir özelliği değiştirmek için GMSMapView seçeneğini kullanın.

GMSMapView, GMSCameraPosition nesnesi veya GMSCameraUpdate nesnesi kullanmadan kamerayı hareket ettirmenize olanak tanıyan çeşitli yöntemler sunar. animateToLocation: veya animateToZoom: gibi bu yöntemlerle tek bir kamera özelliğinde yapılan değişikliği canlandırabilirsiniz.

Ö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 (konum) belirleme

Konum, haritanın merkezini belirler. Konumlar enlem ve boylam ile belirtilir ve CLLocationCoordinate2DMake ile oluşturulan CLLocationCoordinate2D ile programatik olarak gösterilir.

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

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. Alternatif olarak, animateToLocation: yöntemini GMSMapView üzerinde kullanın.

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 GMSCameraUpdate nesnesi de oluşturabilirsiniz. Kamerayı X ve Y yönlerinde kaydırmak için kullanılacak nokta sayısını belirtmek üzere yerleşik yöntemi scrollByX:Y: 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];
      

Rulmanı (yönü) ayarlama

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

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

Swift

mapView.animate(toBearing: 0)
      

Objective-C

[mapView animateToBearing:0];
      

Eğme açısını (görüş açısı) ayarlama

Görüş açısı, kameranın doğrudan haritanın merkez konumunun üzerinde ve Dünya yüzeyinde bulunan bir yay üzerindeki konumudur. Bu açı, nadir noktasından (kameranın doğrudan altını gösteren yön) itibaren derece cinsinden ölçülür. Görüş 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, harita konumunun ötesindeki özellikler ise orantılı olarak daha küçük görünür. Bu da üç boyutlu bir efekt oluşturur.

Görüntüleme açısı 0 (doğrudan haritaya bakma) ile yakınlaştırma düzeyine bağlı maksimum değer arasında değişebilir. Yakınlaştırma seviyesi 16 veya daha yüksek olduğunda maksimum açı 65 derecedir. Yakınlaştırma seviyesi 10 veya daha düşük olduğunda maksimum açı 30 derecedir.

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

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

Yakınlaştırmayı ayarlama

Kameranın yakınlaştırma seviyesi, haritanın ölçeğini belirler. Daha yüksek yakınlaştırma düzeylerinde ekranda daha fazla ayrıntı görebilirsiniz. Daha düşük yakınlaştırma düzeylerinde ise dünyayı daha geniş bir şekilde görebilirsiniz.

Yakınlaştırmayı GMSCameraPosition veya GMSCameraUpdate ile ya da GMSMapView'ün 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 yapmak için GMSCameraUpdate nesnesi oluşturmak üzere 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ı belirleme

Kamerayı, ilgi alanının tamamı mümkün olan en yüksek yakınlaştırma seviyesinde görünecek şekilde hareket ettirmek için kamera görünümü sınırlarını ayarlayın. Örneğin, kullanıcının mevcut konumuna beş mil mesafedeki tüm benzin istasyonlarını göstermek istiyorsanız kamerayı tüm benzin 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 özelliğinin cameraForBounds:insets: yöntemini kullanın.

Bu sınırları, verilen GMSCoordinateBounds öğesinin mevcut haritanın boyutuna tamamen sığacak şekilde ayarlayın. Bu yöntemin, haritanın eğimini ve yönünü 0 olarak ayarladığını unutmayın.

Aşağıdaki örnekte, Vancouver ve Calgary şehirlerinin aynı görünümde yer alması 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 kısıtlama

Bu senaryolar haritanın sınırlarını belirler ancak kullanıcı daha sonra bu sınırların dışında kaydırabilir veya hareket ettirebilir. Bunun yerine, kullanıcıların yalnızca bu sınırlar içinde kaydırıp yakınlaştırabilmesi için haritanın odak noktasının (kamera hedefi) koordinat merkezi sınırlarını kısıtlamak isteyebilirsiniz.

Örneğin, bir alışveriş merkezi veya havaalanı için perakende uygulaması, haritayı belirli sınırlar içinde tutmak isteyebilir. Böylece kullanıcılar bu sınırlar içinde kaydırabilir ve yakınlaştırabilir.

Kaydırmayı belirli sınırlar içinde tutmak için cameraTargetBounds özelliğini, gerekli sınırları tanımlayan bir GMSCoordinateBounds nesnesine ayarlayın.GMSMapView 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 diyagramda, 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ı alan içinde kaldığı sürece kullanıcı kaydırma ve yakınlaştırma yapabilir. Çapraz, kamera hedefini gösterir:

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

Harita, görüntü alanının tanımlanan sınırların dışındaki alanları göstermesine neden olsa bile her zaman görüntü alanını doldurur. Örneğin, kamera hedefini sınırlı alanın bir köşesine yerleştirirseniz köşenin ötesindeki alan görüntü alanında görünür ancak kullanıcılar bu alana daha fazla kaydıramaz. Aşağıdaki diyagramda bu senaryo gösterilmektedir. Çapraz, kamera hedefini temsil eder:

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

Aşağıdaki şemada, kamera hedefinin sınırları çok kısıtlıdır ve kullanıcıya haritayı kaydırma veya yakınlaştırma için çok az fırsat sunar. Çapraz, kamera hedefini gösterir:

Görünüm alanından daha küçük bir kamera sınırlarını gösteren diyagram.

Minimum veya maksimum yakınlaştırma ayarlama

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 sabitlere ayarlanır.

Haritada kullanılabilen yakınlaştırma seviyelerinin aralığını kısıtlamak için minimum ve maksimum yakınlaştırma seviyesi ayarlayın. Aşağıdaki kod, yakınlaştırma seviyesini 10 ile 15 arasında olacak şekilde kısıtlar.

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 mevcut değerleri okuyabilirsiniz. Bu yaklaşım, yalnızca değerlerden birini kısıtlamak istediğinizde faydalıdır. 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];
      

Minimum ve maksimum yakınlaştırma güncellendikten sonra kameranın yakınlaştırma seviyesi 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. Daha sonra yakınlaştırma aralığı 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];