Kamera ve görünüm

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Platform seçin: Android iOS JavaScript

iOS için Haritalar SDK'sı, haritanın kamerasını değiştirerek kullanıcının haritadaki bakış açısını değiştirmenize olanak tanır.

iOS için Haritalar SDK'sı ile eklenen haritalar yatırılabilir ve döndürülebilir. Böylece, kullanıcılar haritayı kendileri için anlamlı bir yöne göre ayarlayabilir. Tüm yakınlaştırma düzeylerinde, haritayı kaydırabilir veya çok az gecikmeyle perspektifini değiştirebilirsiniz.

Kamerada yapılan değişiklikler; işaretçiler, çoklu çizgiler veya eklediğiniz diğer grafiklerde herhangi bir değişikliğe yol açmaz. Ancak, değişikliklerinizi yeni görünüme daha iyi uyacak şekilde değiştirmek isteyebilirsiniz.

Harita görünümü

iOS için Haritalar SDK'sı, Mercator projeksiyonunu kullanarak cihazınızın yüzeyindeki (düz bir düzlem) dünyanın yüzeyini (küre) temsil eder. Doğu ve batı yönünde harita, dünya kendi başına sorunsuzca sarmalanırken sınırsız bir şekilde tekrarlanıyor. Kuzey ve güney yönde harita yaklaşık 85 derece kuzey ve 85 derece güneyle sınırlıdır.

Kamera konumu

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

Kamera özellikleri şeması

Hedef (yer)

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

Enlem, -85 ile 85 derece arasında (ikisi de dahil) olabilir. Bu aralığın üstündeki veya altındaki değerler, bu aralık içindeki en yakın değere sabitlenir. Örneğin, 100 için bir enlem değeri 85 olarak ayarlanır. Boylam, -180 ile 180 derece arasında değişir (bu değerler dahil). Bu aralığın üstündeki veya altındaki değerler, aralığın (-180, 180) kapsamına girecek şekilde sarmalanır. Örneğin, 480, 840 ve 1200 öğelerinin tümü 120 dereceye sarmalanır.

Yatak (yön)

Kamera konumu, gerçek kuzeyden dereceye göre ölçülen ve haritanın üst kenarına karşılık gelen pusula yönünü belirtir. Haritanın ortasından haritanın üst kenarına doğru bir dikey çizgi çizerseniz, rulman, kameranın gerçek kuzeye göre başlığına (derece cinsinden) karşılık gelir.

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

Maps API bir haritanın konumunu değiştirmenize olanak verir. Örneğin, sıklıkla araba kullanan bir kişi, yol tarifini seyahat yönüyle uyumlu hale getirmek için bir yol haritasını çevirir. Harita kullananlar ve pusulalar ise genellikle haritayı, dikey bir çizgi kuzeye işaret edecek şekilde yönlendirir.

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

Yatırma, kameranın kavşağındaki konumunu doğrudan haritanın merkez konumunun üzerinde tanımlar. Ölçüm için nadir değeri (kameranın hemen altındaki yön) kullanılır. 0 değeri, kameranın düz bir yere baktığını gösterir. 0'dan büyük değerler, belirtilen derece sayısına göre ufuğa doğru yerleştirilmiş bir kameraya karşılık gelir. Görüntüleme açısını değiştirdiğinizde, harita, uzak özellikler daha küçük, yakındaki özellikler daha büyük görünen bir bakış açısıyla görüntülenir. Aşağıdaki resimler bunu göstermektedir.

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

0 derecelik görüntüleme açısında 18 yakınlaştırma düzeyinde konumlandırılmış bir kameraya sahip 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 doğrudan konumunu 0 derece açıyla gösteren, varsayılan konumunu gösteren şema.
Kameranın varsayılan görüntüleme açısı.

Aşağıdaki resimlerde görüş açısı 45 derecedir. Kameranın, yay boyunca düz (yukarı) ve zemin (90 derece) arasında yarıya indiğini ve 3 konuma geldiğini unutmayın. Kamera hâlâ haritanın odak noktasını işaret ediyor, ancak çizginin 4. konumunda temsil ettiği alan artık görünür durumda.

45 derece görüntüleme açısında ve 18 yakınlaştırma düzeyinde konumlanmış bir kameraya sahip haritanın ekran görüntüsü.
45 derecelik görüntüleme açısıyla gösterilen harita.
Kameranın görüş açısının 45 dereceye, yakınlaştırma düzeyinin ise 18 dereceye ayarlanmasını gösteren şema.
45 derecelik kamera görüş açısı.

Bu ekran görüntüsündeki harita, orijinal haritadakiyle aynı noktanın merkezinde yer alıyor ancak haritanın üst kısmında daha fazla özellik görünüyor. Açı 45 dereceden fazla arttıkça, kamera ile harita konumu arasındaki özellikler orantılı olarak daha büyük görünür, harita konumunun ötesindeki özellikler ise orantılı olarak daha küçük görünür ve üç boyutlu bir etki sağlar.

Tarih aralığını

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

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

Yakınlaştırma düzeyi tam sayı olmamalıdır. 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 dönüştürülür. Bu değer, minimum yakınlaştırma 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 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:
Haritanın 5 yakınlaştırma düzeyinde ekran görüntüsü
5. yakınlaştırma düzeyinde bir harita.
15 yakınlaştırma düzeyinde haritanın ekran görüntüsü
Yakınlaştırma düzeyi 15'teki harita.
20. seviyedeki bir haritanın ekran görüntüsü
20. yakınlaştırma düzeyinde bir harita.

İlk kamera konumunu ayarlayın

Kamera konumu bir GMSCameraPosition nesnesiyle temsil edilir. Hedefin enlem ve boylamını ayarlamak ve bir eğim, yatırma ve yakınlaştırma ayarı yapmak için bir GMSCameraPosition nesnesi oluşturun.

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

Swift

let camera = GMSCameraPosition(
  latitude: -33.8683,
  longitude: 151.2086,
  zoom: 16
)
mapView = GMSMapView(frame: self.view.bounds, camera: camera)
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:16];
mapView = [GMSMapView mapWithFrame:self.view.bounds camera:camera];
      

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

Swift

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

Objective-C

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

Kamera konumunu değiştirme

Konumu, yatağı, eğimi 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 sağlasa da genellikle GMSCameraPosition veya GMSCameraUpdate özelliğini kullanırsınız:

  • GMSCameraPosition; hedef, eğim, yatırma ve yakınlaştırma dahil olmak üzere tüm kamera konumu parametrelerini değiştirmenize olanak tanıyan özellikler ve yöntemler içerir.

  • GMSCameraUpdate hedefi, eğimi, yatırmayı ve yakınlaştırmayı değiştirmenize imkan sağlar. Ayrıca kaydırmayı, gelişmiş yakınlaştırmayı, kamerayı önceden tanımlanmış sınırlar içinde ortalamayı ve diğer özellikleri desteklemek için ilave kolaylık yöntemleri içerir.

Kamerayı hareket ettirdiğinizde kamerayı yeni konumuna "sna" eklemeyi seçebilirsiniz; yani animasyon kullanamaz veya hareketi animasyonla oynatabilirsiniz. Örneğin, kameranın hedef konumunda bir değişikliği canlandırırsanız animasyon eski konumdan yenisine kaydırılır.

Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında kesişiyor. Temel Animasyon'u kullanarak animasyonun süresini kontrol edebilirsiniz.

GMSCameraPosition hareketini kullanın

Kamerayı GMSCameraPosition kullanarak değiştirmek için yeni bir nesne oluşturur veya mevcut bir nesneyi kopyalayıp daha sonra GMSMapView nesnesine ayarlarsınız. GMSCameraPosition nesnesini kullanarak kamerayı animasyon olmadan yeni konuma tutturun veya hareketi hareket ettirin.

Enlem, boylam, yakınlaştırma, eğim ve görüntüleme açısı gibi kamera özelliklerini yapılandırmak için bir GMSCameraPosition nesnesi kullanın. Ardından bu nesneyi, GMSMapView özelliğinin camera özelliğini ayarlamak için kullanırsınız.

Swift

let fancy = GMSCameraPosition(
  latitude: -33,
  longitude: 151,
  zoom: 6,
  bearing: 270,
  viewingAngle: 45
)
mapView.camera = fancy
      

Objective-C

GMSCameraPosition *fancy = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                       longitude:151.2086
                                                            zoom:6
                                                         bearing:30
                                                    viewingAngle:45];
[mapView setCamera:fancy];
      

Varsayılan değerine ayarlamak istediğiniz tüm GMSCameraPosition mülklerini çı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 bu yeni konuma tutturma veya animasyon ekleme seçeneğine izin verir. GMSCameraUpdate özelliğinin avantajı kolaylıktır. GMSCameraUpdate ile aynı görevleri gerçekleştirmek için GMSCameraPosition özelliğini kullanabilirsiniz ancak GMSCameraUpdate, kameranın manipülasyonunu kolaylaştıracak ek yardımcı yöntemler sağlar.

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

Alternatif olarak, zoomIn: fabrika yöntemini kullanarak 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 çekmek için GMSMapView moveCamera: yöntemini kullanın.

Bir sonraki örnekte, kameranın bir hareketini Vancouver'da ortalamak için GMSCameraUpdate hareketini 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

Fabrika 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 düzeyini 1, 0 değiştirin.
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ğerle artırır (veya negatifse azaltır).
zoomBy:atPoint:
Büyütme düzeyini belirli bir değerle artırır (veya değer negatifse azalır), bir yandan da belirtilen noktanın ekrandaki konumunu korur.
setTarget:
Kameranın enlem ve boylamını değiştirirken diğer tüm özellikleri korur.
setTarget:zoom:
Kameranın enlem, boylam ve yakınlaştırmasını değiştirirken diğer tüm özelliklerini korur.
setCamera:
Yeni bir GMSCameraPosition belirtmenizi sağlar.
scrollByX:Y:
Kameranın enlem ve boylamını, harita belirtilen nokta sayısı kadar hareketli olacak şekilde değiştirin. Pozitif x değeri kameranın sağa gitmesine neden olur. Böylece harita sola kaydırılmış gibi görünür. Pozitif y değeri, kameranın aşağı itilmesine neden olur. Böylece harita yukarı taşınmış gibi görünür. Kaydırma, kameranın mevcut pozisyonuna göre yapılır. Örneğin, kameranın yatağı 90 dereceyse doğu "yukarı"dır.
fitBounds:
Kamerayı, belirtilen sınırların mümkün olan en yüksek yakınlaştırma düzeyinde ortalanacağı şekilde dönüştürür. 64 noktanın sınırlarına varsayılan bir dolgu uygular.
fitBounds:withPadding:
Kamerayı, belirtilen sınırların mümkün olan en yüksek yakınlaştırma düzeyinde ortalanacağı şekilde dönüştürür. Sınırlama kutusu için noktalarda özel dolgu belirtmenize olanak tanır. Her tarafta aynı miktarda dolgu olmasını istediğinizde bu yöntemi kullanın.
fitBounds:withEdgeInsets:
Kamerayı, belirtilen sınırların mümkün olan en yüksek yakınlaştırma düzeyinde ortalanacağı şekilde dönüştürür. Sınırlama kutusu için özel dolguyu UIEdgeInsets olarak belirtmenize olanak tanır. Her kenardaki dolguyu bağımsız olarak ayarlamak istediğinizde bu yöntemi kullanın.

Tek bir mülkte değişiklik yapmak için GMSMapView özelliğini kullanın

GMSMapView, bir GMSCameraPosition veya GMSCameraUpdate nesnesi kullanmadan kamerayı hareket ettirmenize olanak tanıyan çeşitli yöntemler sunar. animateToLocation: veya animateToZoom: gibi bu yöntemler, tek bir kamera özelliğindeki bir değişikliği canlandırmanızı sağlar.

Örneğin, bir ayarı kameranın eğme hareketine animasyon eklemek için toViewingAngle: yöntemini kullanın.

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

Hedef belirleyin (konum)

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

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

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. İsterseniz GMSMapView üzerinde animateToLocation: yöntemini 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. Fabrika yöntemleri arasında, kamerayı X ve Y yönlerinde hareket ettirilecek nokta sayısını belirterek kamerayı kaydırmanıza olanak tanıyan scrollByX:Y: yöntemi bulunur. Sonraki örnekte, kamerayı 200 sağa, 100 nokta aşağı kaydırıyorsunuz:

Swift

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

Objective-C

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

Rulman ayarlama (yön)

Yatan pusula, gerçek kuzeyden derece cinsinden ölçülür ve haritanın üst kenarına karşılık gelir. Örneğin, 90 derecelik bir yön, en üst kenarın doğuya doğru varış noktası olan bir haritayla sonuçlanır.

GMSCameraPosition veya GMSCameraUpdate ile ya da GMSMapView yönteminden animateToBearing: kullanarak yamayı programatik olarak ayarlayın.

Swift

mapView.animate(toBearing: 0)
      

Objective-C

[mapView animateToBearing:0];
      

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

Görüş açısı, kameranın kaide üzerinde, doğrudan haritanın merkez konumu ile Dünya yüzeyi arasındaki konumu belirtir ve nadir noktasından (doğrudan kameranın altına uzanan 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 görünür ve harita konumu ötesindeki özellikler orantılı olarak daha küçük görünür ve üç boyutlu bir etki ortaya çıkar.

Görüntüleme açısı 0 ile (doğrudan haritayı aşağı doğru işaret eder) ve yakınlaştırma düzeyine bağlı bir maksimum değere kadar değişebilir. Yakınlaştırma düzeyi 16 ve üstü için maksimum açı 65 derecedir. Yakınlaştırma düzeyi 10 ve altı için maksimum açı 30 derecedir.

GMSCameraPosition veya GMSCameraUpdate kullanarak ya da animateToViewingAngle: GMSMapView 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ı ayarla

Kameranın yakınlaştırma düzeyi haritanın ölçeğini belirler. Geniş yakınlaştırma seviyelerinde ekranda daha fazla ayrıntı görünürken, küçük yakınlaştırma düzeylerinde dünyanın daha büyük bir kısmı görülebilir.

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

Swift

mapView.animate(toZoom: 12)
      

Objective-C

[mapView animateToZoom:12];
      

Aşağıdaki örnekte, yakınlaştırma düzeyini geçerli seviyeden bir seviye aşacak bir GMSCameraUpdate nesnesi oluşturmak için zoomIn: fabrika 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

Bazen kameranın, tüm ilgi alanının mümkün olan en yüksek yakınlaştırma düzeyinde görülebilmesini sağlayacak şekilde taşınması yararlı olur. Örneğin, kullanıcının bulunduğu konumdan en fazla beş kilometre uzaklıktaki benzin istasyonlarının tamamını görüntülüyorsanız kamerayı, kameraların tümünü ekranda görülebilecek şekilde taşımak isteyebilirsiniz.

İlk olarak, ekranda görünmesini istediğiniz GMSCoordinateBounds değerini hesaplayın. Ardından yeni bir GMSCameraPosition döndürmek için GMSMapView cameraForBounds:insets: yöntemini kullanın. Bu, belirtilen GMSCoordinateBounds öğesinin geçerli harita boyutuna tamamen uygun olmasını sağlar. Harita yatırma ve yatağın her ikisi de 0 olarak ayarlanır.

Aşağıdaki örnekte, kamerayı Vancouver ve Calgary'nin alıntılarının aynı görünümde görünecek şekilde 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 sınırlandırma

Yukarıdaki senaryolarda, haritanın sınırlarını ayarlarsınız, ancak kullanıcı bu sınırların dışına kaydırabilir veya yatay kaydırma yapabilir. Bunun yerine, kullanıcıların yalnızca bu sınırlar içinde kaydırma ve kaydırma yapmasını sağlamak için haritanın odak noktasının (kamera hedefi) enlem/boylam orta sınırlarını sınırlamak isteyebilirsiniz.

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

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

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

Harita, görüntü alanının tanımlanan sınırların dışında 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 konumlandırırsanız köşenin dışındaki alan görüntü alanında görünür ancak kullanıcılar bu alana daha fazla kaydıramaz. Aşağıdaki şemada bu senaryo gösterilmiştir. Haç, kamera hedefini temsil eder:

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

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

Görüntü alanından daha küçük kamera sınırlarının gösterildiği şema.

Minimum veya maksimum yakınlaştırma ayarlama

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

Min. ve maks. yakınlaştırma düzeyi ayarlayarak haritada kullanılabilen yakınlaştırma düzeyi aralığını sınırlandırabilirsiniz. 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ığı setMinZoom:maxZoom: yöntemi kullanılarak ayarlanmalıdır, ancak mevcut değerleri minZoom ve maxZoom özelliklerini kullanarak okuyabilirsiniz. Bu, değerlerden yalnızca birini kısıtlarken faydalıdır. Aşağıdaki kod yalnızca minimum yakınlaştırma düzeyini değiştirir.

Swift

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

Objective-C

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

Min. ve maks. yakınlaştırma değerleri güncellendikten sonra, kameranın yakınlaştırma düzeyi yeni aralığın dışındaki bir değere ayarlanırsa, geçerli yakınlaştırma değeri 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ımlanmaktadır. Yakınlaştırma aralığı daha sonra 10-15 olarak ayarlandığında, geçerli yakınlaştırma 10 olarak güncellenir.

Swift

// Sets the zoom level to 4.
let camera2 = GMSCameraPosition(
  latitude: 41.887,
  longitude: -87.622,
  zoom: 4
)
let mapView2 = GMSMapView(frame: .zero, camera: camera)

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

Objective-C

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