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

iOS için Haritalar SDK'sı sayesinde kullanıcılarınız, haritalarınızı eğip döndürerek bağlamlarına uygun bir yöne ayarlayabilir. Kullanıcılar, herhangi bir yakınlaştırma seviyesinde haritayı kaydırabilir veya çok az gecikmeyle haritanın 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.

Harita görünümü

iOS için Haritalar SDK'sı, dünya yüzeyini (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 bakan bir kamera olarak modellenir. Kameranın konumu (ve dolayısıyla haritanın oluşturulması) şu özelliklerle belirtilir: hedef (enlem/boylam konumu), kerteriz, eğim ve yakınlaştırma.

Kamera özellikleri şeması

Hedef (konum)

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

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 enlem değeri belirtildiğinde değer 85 olarak ayarlanır. Boylam, -180 ile 180 derece arasındadır (bu değerler dahil). Bu aralığın üstünde veya altında olan değerler, (-180, 180) aralığına sığacak şekilde sarmalanır. Örneğin, 480, 840 ve 1200 değerlerinin tümü 120 dereceye sarmalanır.

Yön (oryantasyon)

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

0 yönü, haritanın üst kısmının gerçek kuzeyi gösterdiği anlamına gelir. 90 yön 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üneyi gösterdiği anlamına gelir.

Maps API, haritanın yönünü değiştirmenize olanak tanır. Örneğin, araba kullanan bir kişi genellikle yol haritasını seyahat yönüne göre hizalarken harita ve pusula kullanan yürüyüşçüler genellikle haritayı dikey bir çizgi kuzeyi gösterecek şekilde yönlendirir.

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

Eğim, kameranın doğrudan haritanın merkez konumunun üzerindeki bir yay üzerindeki konumunu tanımlar. Bu konum, nadir (doğrudan kameranın altını gösteren yön) açısından derece cinsinden ölçülür. 0 değeri, kameranın doğrudan aşağı baktığı anlamına gelir. 0'dan büyük değerler, kameranın belirtilen derece kadar ufka doğru eğildiğini gösterir. Görüntüleme açısını değiştirdiğinizde harita, uzaktaki özellikler daha küçük, yakındaki özellikler daha büyük görünecek şekilde perspektif olarak gösterilir. 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. Oluşturulan harita, istemin altında gösteriliyor.

0 derece görüş açısına ve 18 yakınlaştırma seviyesine sahip bir kameranın bulunduğu 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 bir açıyla gösteren diyagram.
Kameranın varsayılan görüntüleme açısı.

Aşağıdaki resimlerde görüntüleme açısı 45 derecedir. Kameranın, tam tepeden (0 derece) yere (90 derece) doğru bir yayın yarısına kadar hareket ederek 3 konumuna geldiğini görebilirsiniz. Kamera hâlâ haritanın merkez noktasını gösteriyor ancak 4 konumundaki çizgiyle temsil edilen alan artık görünür durumda.

45 derecelik görüş açısına sahip bir kameranın 18 yakınlaştırma seviyesindeki harita görüntüsü.
Harita 45 derecelik bir görüntüleme açısıyla gösterilir.
Kameranın görüntüleme açısının 45 dereceye, yakınlaştırma seviyesinin ise 18'e ayarlandığını gösteren diyagram.
45 derecelik kamera görüntüleme açısı.

Bu ekran görüntüsündeki harita, orijinal haritayla aynı noktayı ortalamış olsa da 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 görünürken harita konumunun ötesindeki özellikler 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 dünyanın daha büyük bir kısmı ekranda görülebilir. 0 yakınlaştırma seviyesinde haritanın ölçeği, tüm dünyanın yaklaşık 256 nokta genişliğinde olacağı şekildedir.

Yakınlaştırma seviyesini 1 artırdığınızda, dünyadaki genişlik ekranda iki katına çıkar. Bu nedenle, N yakınlaştırma seviyesinde dünyanın genişliği yaklaşık olarak 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 seviyesinin tam sayı olması gerekmez. Haritanın izin verdiği yakınlaştırma seviyeleri aralığı; hedef, harita türü ve ekran boyutu gibi çeşitli faktörlere bağlıdır. Aralık dışındaki tüm sayılar, en yakın geçerli değere dönüştürülür. Bu değer, minimum yakınlaştırma seviyesi veya maksimum yakınlaştırma seviyesi olabilir. Aşağıdaki listede, her yakınlaştırma seviyesinde görmeyi bekleyebileceğiniz yaklaşık ayrıntı düzeyi gösterilmektedir:

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

İlk kamera konumunu ayarlama

Hedefin enlem 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.

İlk kamera konumunu ayarlamak için bir 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ştirirsiniz.

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 sunar. Ancak genellikle GMSCameraPosition veya GMSCameraUpdate kullanılır:

  • GMSCameraPosition, her kamera konumu parametresini (hedef, yön, eğim ve yakınlaştırma) 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 ve daha fazlasını destekleyen ek kolaylık yöntemleri içerir.

Kamerayı hareket ettirdiğinizde, kamerayı yeni konuma "yapıştırmayı" (animasyon olmaz) veya harekete animasyon eklemeyi seçebilirsiniz. Örneğin, kameranın hedef konumunda yapılan bir değişikliğe animasyon uygularsanız animasyon, önceki konumdan yeni konuma kaydırılır.

Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında interpolasyon yapar. Core Animation'ı 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 kopyalar, ardından GMSMapView nesnesinde ayarlarsınız. Kamerayı animasyonlu veya animasyonsuz olarak yeni konuma taşımak 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 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 GMSCameraPosition özelliklerini çıkarı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 yeni konuma geçişin anlık mı yoksa animasyonlu mu olacağını seçmenize olanak tanır. GMSCameraUpdate, kolaylık avantajı sunar. GMSCameraUpdate ile aynı görevleri gerçekleştirmek için GMSCameraPosition kullanabilirsiniz ancak GMSCameraUpdate, kamerayı kullanmayı kolaylaştıran ek yardımcı yöntemler sağlar.

Örneğin, mevcut yakınlaştırma seviyesini artırmak için GMSCameraPosition kullanmak istiyorsanız önce mevcut yakınlaştırma seviyesini belirlemeniz, ardından yakınlaştırmayı mevcut yakınlaştırmadan bir değer daha büyük olacak şekilde 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, kamerayı Vancouver'ı ortalayacak şekilde hareket ettirmek için GMSCameraUpdate kullanacaksınız.

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 seviyesini 1, 0 değiştirin.
zoomTo:
Diğer tüm özellikleri aynı tutarken yakınlaştırma seviyesini belirtilen değere değiştirir.
zoomBy:
Yakınlaştırma seviyesini, belirtilen değer kadar artırır (veya değer negatifse azaltır).
zoomBy:atPoint:
Belirtilen noktanın ekrandaki konumunu korurken yakınlaştırma seviyesini verilen değer kadar artırır (veya değer negatifse azaltır).
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 enlemini, boylamını ve yakınlaştırma düzeyini değiştirir.
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 hareket etmesine neden olur. Böylece harita sola hareket etmiş gibi görünür. Pozitif bir y değeri, kameranın aşağı hareket etmesine neden olur. Böylece harita yukarı hareket etmiş gibi görünür. Kaydırma, kameranın mevcut yönüne göre yapılır. Örneğin, kameranın yönü 90 derece ise doğu "yukarı"dır.
fitBounds:
Kamerayı, belirtilen sınırları mümkün olan en yüksek yakınlaştırma seviyesinde ekranda ortalayacak şekilde dönüştürür. Sınırlara 64 noktalık varsayılan bir dolgu uygular.
fitBounds:withPadding:
Kamerayı, belirtilen sınırları mümkün olan en yüksek yakınlaştırma seviyesinde 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 seviyesinde ekranda ortalayacak şekilde dönüştürür. UIEdgeInsets ile sınırlayıcı kutunun her bir tarafı için dolguyu bağımsız olarak belirtirsiniz.

Tek bir özelliği değiştirmek için GMSMapView kullanın

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

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

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

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, GMSMapView üzerinde animateToLocation: yöntemini 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 bir GMSCameraUpdate nesnesi de oluşturabilirsiniz. Kamerayı X ve Y yönlerinde kaydırılacak nokta sayısını belirtmek için yerleşik yöntemini (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önü (oryantasyon) ayarlama

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 yön, üst kenarın tam doğuyu gösterdiği bir haritayla sonuçlanır.

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

Swift

mapView.animate(toBearing: 0)
      

Objective-C

[mapView animateToBearing:0];
      

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

Görüntüleme açısı, kameranın haritanın merkez konumunun tam üstü ile Dünya yüzeyi arasındaki bir yay üzerindeki konumudur. Nadir (kameranın tam altını gösteren yön) noktasından 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, harita konumunun ötesindeki özellikler ise orantılı olarak daha küçük görünür ve üç boyutlu bir efekt elde edilir.

Görüntüleme açısı 0 (doğrudan haritaya bakma) ile yakınlaştırma seviyesine bağlı bir maksimum değer arasında 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 seviyesi için maksimum açı 30 derecedir.

GMSCameraPosition veya GMSCameraUpdate kullanarak ya da GMSMapView öğesinin animateToViewingAngle: yöntemini kullanarak 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 seviyelerinde ekranda daha fazla ayrıntı görebilir, daha düşük yakınlaştırma seviyelerinde ise dünyanın daha büyük bir bölümünü görebilirsiniz.

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

Swift

mapView.animate(toZoom: 12)
      

Objective-C

[mapView animateToZoom:12];
      

Aşağıdaki örnekte, mevcut seviyeden bir seviye yakınlaştırma animasyonu oluşturmak için zoomIn: yöntemini kullanarak bir GMSCameraUpdate nesnesi oluşturulmaktadı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ı 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ü için sınırlar belirleyin. Örneğin, kullanıcının mevcut konumuna beş mil mesafedeki tüm benzin istasyonlarını göstermek istiyorsanız kamerayı, hepsi 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 öğesinin cameraForBounds:insets: yöntemini kullanın.

Bu sınırları, verilen GMSCoordinateBounds 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 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 işlemini 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ışına kaydırabilir veya kaydırabilir. Bunun yerine, kullanıcıların yalnızca bu sınırlar içinde kaydırma ve kaydırma yapabilmesi 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ırlarla kısıtlayarak kullanıcıların bu sınırlar içinde kaydırma ve kaydırma yapmasına olanak tanıyabilir.

Kaydırmayı belirli sınırlar içinde 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 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. Kullanıcı, kamera hedefi sınırlı alan içinde kaldığı sürece kaydırma ve yatay kaydırma yapabilir. Artı işareti, kamera hedefini temsil eder:

Görüntü alanından daha büyük kamera sınırları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. Çarpı işareti, kamera hedefini temsil eder.

Kamera sınırlarının sağ alt köşesine yerleştirilmiş kamera hedefini gösteren diyagram.

Aşağıdaki diyagramda, kamera hedefinin sınırları çok kısıtlıdır. Bu nedenle, kullanıcı haritayı çok az kaydırabilir veya kaydırabilir. Çarpı işareti, kamera hedefini temsil eder:

Görüntü alanından daha küçük 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 options = GMSMapViewOptions()
options.camera = camera
let mapView = GMSMapView(options: options)
mapView.setMinZoom(10, maxZoom: 15)
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.887
                                                       longitude:-87.622
                                                             zoom:12];
GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = camera;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
[mapView setMinZoom:10 maxZoom:15];
      

Yakınlaştırma aralığını setMinZoom:maxZoom: yöntemiyle ayarlamanız gerekir ancak mevcut değerleri minZoom ve maxZoom özelliklerini kullanarak okuyabilirsiniz. Bu yaklaşım, değerlerden yalnızca birini kısıtlarken 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 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 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 options2 = GMSMapViewOptions()
options2.camera = camera2
let mapView2 = GMSMapView(options: options2)

// The current zoom, 4, is outside of the range. The zoom will change to 10.
mapView2.setMinZoom(10, maxZoom: 15)
      

Objective-C

// Sets the zoom level to 4.
GMSCameraPosition *camera2 = [GMSCameraPosition cameraWithLatitude:41.887
                                                         longitude:-87.622
                                                              zoom:4];
GMSMapViewOptions *options2 = [[GMSMapViewOptions alloc] init];
options2.camera = camera2;
GMSMapView *mapView2 = [[GMSMapView alloc] initWithOptions:options2];
// The current zoom, 4, is outside of the range. The zoom will change to 10.
[mapView setMinZoom:10 maxZoom:15];