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 baktığı yönü değiştirebilirsiniz.

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

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

Haritanın görünümü

iOS için Haritalar SDK'sı, dünyanın yüzeyini (bir küre) cihazınızın ekranında (düz bir düzlem) temsil etmek için 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 (ve dolayısıyla haritanın oluşturulması) aşağıdaki özelliklerle belirtilir: hedef (enlem/boylam konumu), yön, eğilme ve yakınlaştırma.

Kamera özellikleri şeması

Hedef (konum)

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

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 ayarlanır. Örneğin, 100 enlem değeri belirtilirse değer 85 olarak ayarlanır. Boylam, -180 ile 180 derece arasındadır. Bu aralığın üstündeki veya altındaki değerler, (-180, 180) aralığına sığacak şekilde sarılır. Örneğin, 480, 840 ve 1.200 değerlerinin tümü 120 dereceye yuvarlanır.

Yön (yönlendirme)

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 ortasından üst kenarına dikey bir çizgi çizerseniz yön, gerçek kuzeye göre kameranın yönüne (derece cinsinden ölçülür) karşılık gelir.

0 yön açısı, haritanın üst kısmının gerçek kuzeyi gösterdiği anlamına gelir. 90 olan yön değeri, haritanın üst kısmının tam doğuya (pusulada 90 derece) baktığı anlamına gelir. 180 değeri, haritanın üst kısmının tam 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 ettiği yöne göre çevirir. Harita ve pusula kullanan yürüyüşçüler ise haritayı genellikle dikey bir çizginin kuzeye bakacak ş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 (kameranın tam altına bakan yön) referans alınarak derece cinsinden ölçülür. 0 değeri, kameranın aşağıya baktığına karşılık gelir. 0'dan büyük değerler, belirtilen derece sayısı kadar ufuğa doğru eğimli bir kameraya karşılık gelir. Görüntüleme açısını değiştirdiğinizde harita perspektifli olarak gösterilir. Uzaktaki özellikler daha küçük, yakındaki özellikler ise daha büyük görünür. Aşağıdaki görseller bunu göstermektedir.

Aşağıdaki resimlerde görüntüleme açısı 0 derecedir. İlk resimde bunun şematik bir gösterimi yer almaktadır. 1. konum kamera konumu, 2. konum ise mevcut harita konumudur. Elde edilen harita aşağıda gösterilir.

0 derece görüş açısına sahip bir kameranın 18 yakınlaştırma düzeyinde konumlandırıldığı bir haritanın ekran görüntüsü.
Kameranın varsayılan görüntüleme açısıyla görüntülenen harita.
Kameranın varsayılan konumunu, doğrudan harita konumunun üzerinde 0 derecelik bir açıyla gösteren şema.
Kameranın varsayılan izleme açısı.

Aşağıdaki resimlerde görüntüleme açısı 45 derecedir. Kameranın, 3 konumuna gitmek için tam olarak baş hizasında (0 derece) ve zemin (90 derece) arasındaki bir yayın yarısına kadar hareket ettiğini görebilirsiniz. Kamera hâlâ haritanın merkez noktasını gösteriyor ancak 4 konumundaki çizgiyle gösterilen alan artık görünür durumda.

18 yakınlaştırma düzeyinde, kamera 45 derecelik görüntüleme açısına yerleştirilmiş bir haritanın ekran görüntüsü.
45 derecelik bir görüntüleme açısıyla gösterilen harita.
Yakınlaştırma seviyesi 18 olarak ayarlanmışken kameranın görüntüleme açısının 45 dereceye ayarlandığını gösteren diyagram.
45 derecelik kamera izleme açısı.

Bu ekran görüntüsünde gösterilen harita, orijinal haritadakiyle aynı noktaya odaklanmış durumdadır ancak haritanın üst kısmında daha fazla özellik gösterilmektedir. Açı 45 derecenin üzerine çıktığında kamera ile harita konumu arasındaki özellikler orantılı olarak daha büyük, harita konumunun dışındaki ö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 düzeyi, haritanın ölçeğini belirler. Daha yüksek yakınlaştırma seviyelerinde ekranda daha fazla ayrıntı, daha düşük yakınlaştırma seviyelerinde ise dünyanın daha büyük bir kısmı görülebilir. 0 yakınlaştırma düzeyinde, haritanın ölçeği öyledir ki dünyanın tamamı yaklaşık 256 piksel genişliğinde olur.

Yakınlaştırma düzeyini 1 artırdığınızda ekrandaki dünyanın genişliği iki katına çıkar. Bu nedenle, N yakınlaştırma düzeyinde dünyanın genişliği yaklaşık 256 * 2N noktasıdır. Örneğin, 2. yakınlaştırma seviyesinde tüm dünyanın genişliği yaklaşık 1024 pikseldir.

Yakınlaştırma düzeyi tam sayı olmak zorunda değildir. Haritanın izin verdiği yakınlaştırma seviyesi 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 düzeyi 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: 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 düzeyindeki bir haritanın ekran görüntüsü
5. yakınlaştırma seviyesindeki bir harita.
15 yakınlaştırma düzeyindeki bir haritanın ekran görüntüsü
15. yakınlaştırma seviyesindeki bir harita.
20 yakınlaştırma düzeyindeki bir haritanın ekran görüntüsü
20. yakınlaştırma düzeyindeki bir harita.

İlk kamera konumunu ayarlama

Yön, eğme ve yakınlaştırma ile birlikte hedefin enlem ve boylamını ayarlamanıza olanak tanıyan GMSCameraPosition nesnesi kullanarak ilk kamera konumunu ayarlayın.

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

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ştirebilirsiniz.

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ünü, eğimini 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'yi kullanırsınız:

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

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

Kamerayı hareket ettirirken kamerayı yeni konuma "anında" taşımayı (yani animasyonsuz taşımayı) veya hareketi animasyonlu olarak taşımayı seçebilirsiniz. Örneğin, kameranın hedef konumunda bir değişiklik animasyonu oluşturursanız animasyon, önceki konumdan yeni konuma kaydırılır.

Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında geçiş yapar. Core Animation'i kullanarak animasyonun süresini kontrol edebilirsiniz.

GMSCameraPosition hareketini kullanın

GMSCameraPosition ile kamerayı değiştirmek için yeni bir nesne oluşturur veya mevcut bir nesneyi kopyalayıp GMSMapView nesnesine ayarlarsınız. Kamerayı animasyonlu veya animasyonsuz olarak yeni konuma çekmek 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. 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 çıkarın.

Hareketi animasyonlu hale getirmek 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 sabitleyip sabitlemeyeceğinizi veya animasyonla taşıyıp taşıyamayacağınızı seçmenize olanak tanır. GMSCameraUpdate'ün avantajı kolaylıktır. GMSCameraUpdate ile aynı görevleri gerçekleştirmek için GMSCameraPosition'ü kullanabilirsiniz ancak GMSCameraUpdate, kamerayı kontrol etmeyi kolaylaştırmak için ek yardımcı yöntemler sunar.

Örneğin, mevcut yakınlaştırma düzeyini artırmak için GMSCameraPosition öğesini kullanmak istiyorsanız önce mevcut yakınlaştırma düzeyini belirlemeniz, ardından yakınlaştırmayı mevcut yakınlaştırmadan bir değer daha büyük bir değere ayarladığınız bir GMSCameraPosition nesnesi oluşturmanız gerekir.

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

Bir sonraki örnekte, kamerayı Vancouver'a odaklamak için hareketini animasyonlu olarak göstermek üzere GMSCameraUpdate simgesini kullanırsı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 düzeyini 1, 0 olarak değiştirin.
zoomTo:
Diğer tüm özellikleri aynı tutarken yakınlaştırma düzeyini belirtilen değere değiştirir.
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 seviyesini belirtilen değer kadar artırır (veya değer negatifse azaltır).
setTarget:
Diğer tüm özellikleri koruyarak kameranın enlem ve boylamını değiştirir.
setTarget:zoom:
Diğer tüm özellikler korunurken kameranın enlem, boylam ve yakınlaştırma ayarlarını değiştirir.
setCamera:
Yeni bir GMSCameraPosition ayarlar.
scrollByX:Y:
Haritayı belirtilen sayıda nokta 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 doğru hareket etmiş gibi görünür. Pozitif y değeri, kameranın aşağı hareket etmesine neden olur. Böylece harita yukarı doğru 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:
Kamera, belirtilen sınırları mümkün olan en yüksek yakınlaştırma düzeyinde ekranın ortasına gelecek şekilde dönüştürülür. 64 noktalık kenarlara varsayılan bir dolgu uygular.
fitBounds:withPadding:
Kamera, belirtilen sınırları mümkün olan en yüksek yakınlaştırma düzeyinde ekranın ortasına gelecek şekilde dönüştürülür. Bu yöntemi, sınırlayıcı kutunun tüm kenarlarında aynı dolguyu (noktada) belirtmek için kullanın.
fitBounds:withEdgeInsets:
Kamera, belirtilen sınırları mümkün olan en yüksek yakınlaştırma düzeyinde ekranın ortasına gelecek şekilde dönüştürülür. UIEdgeInsets ile, sınırlayıcı kutunun her bir tarafı için ayrı ayrı dolgu belirtirsiniz.

Tek bir özelliği değiştirmek için GMSMapView simgesini 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 mülkünde yapılan bir değişikliği animasyonlu olarak gösterebilirsiniz.

Örneğin, kamera eğikliğindeki bir değişikliği animasyonlu olarak göstermek için toViewingAngle: yöntemini kullanın.

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

Hedef (konum) ayarlama

Konum, haritanın merkezini belirler. Konumlar enlem ve boylamla belirtilir ve CLLocationCoordinate2DMake ile oluşturulan bir CLLocationCoordinate2D ile programatik olarak temsil edilir.

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 animasyonlu olarak gerçekleştirmek ve haritayı yeni konuma kaydırmak için camera özelliğini ayarlamak yerine animateToCameraPosition: yöntemini kullanabilirsiniz. Dilerseniz GMSMapView'da 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 ve 100 nokta aşağı kaydırıyorsunuz:

Swift

// Move the camera 200 points to the right, and 100 points downwards
let downwards = GMSCameraUpdate.scrollBy(x: 200, y: 100)
mapView.animate(with: downwards)
      

Objective-C

// Move the camera 200 points to the right, and 100 points downwards
GMSCameraUpdate *downwards = [GMSCameraUpdate scrollByX:200.0 Y:100.0];
[mapView animateWithCameraUpdate:downwards];
      

Yön (yönlendirme) 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ın doğuya doğru işaret ettiği bir harita oluşturur.

Yönlendirmeyi GMSCameraPosition veya GMSCameraUpdate ile veya GMSMapView'ın animateToBearing: yöntemiyle programatik olarak ayarlayın.

Swift

mapView.animate(toBearing: 0)
      

Objective-C

[mapView animateToBearing:0];
      

Eğme açısı (izleme açısı) ayarlama

Görüntüleme açısı, kameranın haritanın tam ortasının üzerinde ve Dünya'nın yüzeyi arasında kalan bir yay üzerindeki konumudur. Nadir (kameranın tam altına doğru olan yön) referans alınarak derece cinsinden ölçülür. Görüntüleme açısını değiştirdiğinizde harita perspektifte 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 (haritaya doğrudan aşağı bakıyor) ile yakınlaştırma düzeyine bağlı maksimum değer arasında değişebilir. 16 veya daha yüksek yakınlaştırma düzeyi için maksimum açı 65 derecedir. 10 veya daha düşük yakınlaştırma düzeylerinde maksimum açı 30 derecedir.

Görüntüleme açısını GMSCameraPosition veya GMSCameraUpdate'ü ya da GMSMapView'ın animateToViewingAngle: yöntemini kullanarak 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 düzeyi, 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 kısmını görebilirsiniz.

Yakınlaştırmayı GMSCameraPosition veya GMSCameraUpdate ile veya 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 oluşturmak için zoomIn: yöntemi kullanılarak 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ı belirleme

Kamerayı, ilgilendiğiniz alanın tamamının mümkün olan en yüksek yakınlaştırma düzeyinde görüneceği şekilde taşımak için kamera görünümünün sınırlarını ayarlayın. Örneğin, kullanıcının mevcut konumundan beş mil içindeki tüm benzin istasyonlarını göstermek istiyorsanız kamerayı, tüm istasyonların ekranda görüneceğ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 sınıfının cameraForBounds:insets: yöntemini kullanın.

Bu sınırları ayarlamak, belirtilen GMSCoordinateBounds değerinin mevcut haritanın boyutuna tamamen sığmasını sağlar. 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ö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 hareketini belirli bir alana 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ı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ırlara bağlayarak kullanıcıların bu sınırlar içinde kaydırmasına ve yakınlaştırmasına izin verebilir.

Kaydırma işlemini belirli sınırlarla kısıtlamak için GMSMapView nesnesinin 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 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 alana kısıtlandığı bir senaryo gösterilmektedir. Kullanıcı, kamera hedefinin sınırlı alan içinde kalması koşuluyla kaydırabilir ve yakınlaştırıp uzaklaştırabilir. Haç, 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. Haç, kamera hedefini gösterir:

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

Aşağıdaki şemada kamera hedefinin sınırları çok kısıtlıdır. Bu da kullanıcıya haritayı kaydırma veya kaydırma yapma fırsatı sunmaz. Haç, kamera hedefini gösterir:

Görüntü alanından küçük bir kamera sınırı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.

Haritanın kullanabileceği yakınlaştırma düzeyi aralığını kısıtlamak için minimum ve maksimum yakınlaştırma düzeyi ayarlayın. Aşağıdaki kod, yakınlaştırma düzeyini 10 ile 15 arasında 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 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 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. 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];