Kamera ve görünüm

Platform seçin: Android iOS JavaScript

Android için Haritalar SDK'sındaki haritalar, basit hareketlerle eğilebilir ve döndürülebilir. Böylece kullanıcılar, haritayı kendileri için anlamlı bir yöne ayarlayabilir. Vektör tabanlı harita karolarının daha küçük ayak izi sayesinde, herhangi bir yakınlaştırma seviyesinde haritayı kaydırabilir veya çok az gecikmeyle perspektifini değiştirebilirsiniz.

Kod örnekleri

GitHub'daki ApiDemos deposu, kamera özelliklerini gösteren bir örnek içerir:

Giriş

Web'deki Google Haritalar gibi, Android için Haritalar SDK'sı da Mercator projeksiyonunu kullanarak dünya yüzeyini (küre) cihazınızın ekranında (düzlem) gösterir. Doğu ve batı yönünde, dünya kendi etrafında kesintisiz bir şekilde döndüğü için harita sonsuz bir şekilde tekrarlanır. Kuzey ve güney yönünde harita yaklaşık 85 derece kuzey ve 85 derece güney ile sınırlıdır.

Not: Mercator projeksiyonu, boylam olarak sınırlı bir genişliğe ancak enlem olarak sınırsız bir yüksekliğe sahiptir. Mercator projeksiyonunu kullanan temel harita görüntülerini yaklaşık +/- 85 derecede "keserek" haritayı kare şekline getiririz. Bu sayede, karo seçimi için daha kolay bir mantık elde edilir.

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

Kamerada yapılan değişiklikler, eklediğiniz işaretçiler, yer paylaşımları veya diğer grafiklerde herhangi bir değişiklik yapmaz. Ancak eklemelerinizi yeni görünüme daha iyi uyacak şekilde değiştirmek isteyebilirsiniz.

Harita üzerinde kullanıcı hareketlerini dinleyebildiğiniz için haritayı kullanıcı isteklerine göre değiştirebilirsiniz. Örneğin, OnMapClickListener.onMapClick() geri çağırma yöntemi, haritaya tek bir dokunuşa yanıt verir. Yöntem, dokunma konumunun enlem ve boylamını aldığından, bu noktaya kaydırarak veya yakınlaştırarak yanıt verebilirsiniz. Bir işaretçinin balonuna dokunmaya veya işaretçi üzerinde sürükleme hareketine yanıt vermek için benzer yöntemler kullanılabilir.

Kamera hareketlerini de dinleyebilirsiniz. Böylece uygulamanız, kamera hareket etmeye başladığında, hareket halindeyken veya hareket etmeyi durdurduğunda bildirim alır. Ayrıntılı bilgi için kamera değişikliği etkinlikleri kılavuzuna bakın.

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ında (bu değerler dahil) değişir. Bu aralığın üstünde veya altında olan değerler, (-180, 180) aralığına girecek ş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çerek belirtir. 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üneye baktığı 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üyle hizalamak için döndürürken, 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, doğrudan aşağı bakan bir kameraya karşılık gelir. 0'dan büyük değerler, belirtilen derece kadar ufka doğru eğilmiş bir kameraya karşılık gelir. 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ü.
Kameranın varsayılan görüntüleme açısıyla gösterilen harita.
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ğine dikkat edin. Kamera hâlâ haritanın merkez noktasını gösteriyor ancak 4 konumundaki çizginin temsil ettiği alan artık görünür durumda.

45 derecelik görüş açısına sahip bir kameranın 18 yakınlaştırma seviyesinde gösterdiği haritanın ekran 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ı merkeze alıyor ancak haritanın üst kısmında daha fazla özellik görünüyor. 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 dünyanın daha büyük bir kısmı görülebilir. 0 yakınlaştırma seviyesinde haritanın ölçeği, tüm dünyanın yaklaşık 256 dp (yoğunluktan bağımsız piksel) 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 256 * 2N dp'dir. Örneğin, 2. yakınlaştırma seviyesinde tüm dünya yaklaşık 1024 dp 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.
15 yakınlaştırma seviyesindeki bir haritanın ekran görüntüsü
Yakınlaştırma seviyesi 15 olan 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.

Kamerayı hareket ettirme

Maps API, haritada dünyanın hangi bölümünün görüneceğini değiştirmenize olanak tanır. Bu, kameranın konumu değiştirilerek (haritayı hareket ettirmek yerine) yapılır.

Kamerayı değiştirdiğinizde, ortaya çıkan kamera hareketine animasyon ekleme seçeneğiniz vardır. Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında interpolasyon yapar. Animasyonun süresini de kontrol edebilirsiniz.

Kameranın konumunu değiştirmek için CameraUpdate kullanarak kamerayı taşımak istediğiniz yeri belirtmeniz gerekir. Maps API, CameraUpdateFactory kullanarak birçok farklı türde CameraUpdate oluşturmanıza olanak tanır. Aşağıdaki seçenekler kullanılabilir:

Yakınlaştırma seviyesini değiştirme ve minimum/maksimum yakınlaştırmayı ayarlama

CameraUpdateFactory.zoomIn() ve CameraUpdateFactory.zoomOut(), diğer tüm özellikleri aynı tutarken yakınlaştırma seviyesini 1,0 değiştiren bir CameraUpdate döndürür.

CameraUpdateFactory.zoomTo(float), diğer tüm özellikleri aynı tutarken yakınlaştırma seviyesini verilen değere değiştiren bir CameraUpdate döndürür.

CameraUpdateFactory.zoomBy(float) ve CameraUpdateFactory.zoomBy(float, Point) yakınlaştırma seviyesini belirtilen değer kadar artıran (veya değer negatifse azaltan) bir CameraUpdate döndürür. İkincisi, ekrandaki belirli bir noktayı aynı konumda (enlem/boylam) kalacak şekilde sabitler ve bunu yapmak için kameranın konumunu değiştirebilir.

Tercih edilen bir minimum ve/veya maksimum yakınlaştırma seviyesi ayarlamak faydalı olabilir. Örneğin, uygulamanız bir önemli yerin çevresinde tanımlanmış bir alan gösteriyorsa veya sınırlı sayıda yakınlaştırma seviyesine sahip özel bir karo yer paylaşımı kullanıyorsanız kullanıcının deneyimini kontrol etmek için bu özellikten yararlanabilirsiniz.

Kotlin

map.setMinZoomPreference(6.0f)
map.setMaxZoomPreference(14.0f)

      

Java

map.setMinZoomPreference(6.0f);
map.setMaxZoomPreference(14.0f);

      

API'nin, kullanıcıların çok fazla veya çok az yakınlaştırma yapmasına izin vermesini engelleyebilecek teknik hususlar olduğunu unutmayın. Örneğin, uydu veya arazi, temel harita parçalarından daha düşük bir maksimum yakınlaştırmaya sahip olabilir.

Kamera konumunu değiştirme

Yaygın konum değişiklikleri için iki kolaylık yöntemi vardır. CameraUpdateFactory.newLatLng(LatLng), kameranın enlem ve boylamını değiştiren bir CameraUpdate döndürürken diğer tüm özellikleri korur. CameraUpdateFactory.newLatLngZoom(LatLng, float), kameranın enlemini, boylamını ve yakınlaştırma düzeyini değiştiren, diğer tüm özellikleri koruyan bir CameraUpdate döndürür.

Kamera konumunu değiştirirken tam esneklik için CameraUpdateFactory.newCameraPosition(CameraPosition) kullanın. Bu, kamerayı belirtilen konuma taşıyan bir CameraUpdate sağlar. CameraPosition, doğrudan new CameraPosition() kullanılarak veya new CameraPosition.Builder() kullanılarak CameraPosition.Builder ile elde edilebilir.

Kaydırma

CameraUpdateFactory.scrollBy(float, float), haritanın belirtilen piksel sayısı kadar hareket etmesi için kameranın enlem ve boylamını değiştiren bir CameraUpdate sağlar. 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ğı doğru hareket etmesine neden olur. Böylece harita yukarı doğru hareket etmiş gibi görünür. Buna karşılık, negatif x değerleri kameranın sola hareket etmesine neden olur. Bu durumda harita sağa hareket etmiş gibi görünür. Negatif y değerleri ise kameranın yukarı hareket etmesine neden olur. 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.

Sınırları belirleme

Haritanın sınırlarını ayarlama

Bazen kamerayı, ilgilenilen alanın tamamı mümkün olan en yüksek yakınlaştırma seviyesinde görünecek şekilde hareket ettirmek yararlı olabilir. Örneğin, kullanıcının mevcut konumuna beş mil mesafedeki tüm benzin istasyonlarını gösteriyorsanız kamerayı hepsinin ekranda görüneceği şekilde hareket ettirmek isteyebilirsiniz. Bunu yapmak için öncelikle ekranda görünmesini istediğiniz LatLngBounds hesaplayın. Ardından, belirtilen dolguyu (piksel cinsinden) hesaba katarak, verilen LatLngBounds haritaya tamamen sığacak şekilde kamera konumunu değiştiren bir CameraUpdate elde etmek için CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds, int padding) kullanabilirsiniz. Döndürülen CameraUpdate, belirtilen sınırlar ile haritanın kenarı arasındaki boşluğun (piksel cinsinden) en az belirtilen dolgu kadar olmasını sağlar. Haritanın eğiminin ve yönünün 0 olacağını unutmayın.

Kotlin

val australiaBounds = LatLngBounds(
    LatLng((-44.0), 113.0), // SW bounds
    LatLng((-10.0), 154.0), // NE bounds
)
map.moveCamera(CameraUpdateFactory.newLatLngBounds(australiaBounds, 0))

      

Java

LatLngBounds australiaBounds =
        new LatLngBounds(
                new LatLng(-44, 113), // SW bounds
                new LatLng(-10, 154) // NE bounds
                );
map.moveCamera(CameraUpdateFactory.newLatLngBounds(australiaBounds, 0));

      

Haritayı bir alanın ortasına getirme

Bazı durumlarda, kameranızı uç sınırları dahil etmek yerine bir sınır içinde ortalamak isteyebilirsiniz. Örneğin, kamerayı bir ülkeye ortalarken yakınlaştırma düzeyini sabit tutmak için bu seçeneği kullanabilirsiniz. Bu durumda, LatLngBounds oluşturup LatLngBounds ile CameraUpdateFactory.newLatLngZoom(LatLng latLng, float zoom) kullanarak benzer bir yöntem uygulayabilirsiniz.getCenter() yöntemi. getCenter() yöntemi, LatLngBounds öğesinin coğrafi merkezini döndürür.

Kotlin

val australiaBounds = LatLngBounds(
    LatLng((-44.0), 113.0), // SW bounds
    LatLng((-10.0), 154.0), // NE bounds
)
map.moveCamera(CameraUpdateFactory.newLatLngZoom(australiaBounds.center, 10f))

      

Java

LatLngBounds australiaBounds =
        new LatLngBounds(
                new LatLng(-44, 113), // SW bounds
                new LatLng(-10, 154) // NE bounds
                );
map.moveCamera(CameraUpdateFactory.newLatLngZoom(australiaBounds.getCenter(), 10));

      

newLatLngBounds(boundary, width, height, padding) yönteminin aşırı yüklenmesi, bir dikdörtgen için piksel cinsinden genişlik ve yükseklik belirtmenize olanak tanır. Bu değerlerin haritanın boyutlarına karşılık gelmesi amaçlanır. Dikdörtgen, merkezi harita görünümünün merkeziyle aynı olacak şekilde konumlandırılır (böylece, belirtilen boyutlar harita görünümünün boyutlarıyla aynıysa dikdörtgen harita görünümüyle çakışır). Döndürülen CameraUpdate, kamerayı, belirtilen LatLngBounds, gerekli dolguyu hesaba katarak mümkün olan en yüksek yakınlaştırma seviyesinde, verilen dikdörtgen içinde ekranda ortalanacak şekilde hareket ettirir.

Not: CameraUpdate oluşturmak için daha basit olan newLatLngBounds(boundary, padding) yöntemini yalnızca harita düzenlendikten sonra kamerayı hareket ettirmek için kullanın. Düzen sırasında API, sınırlayıcı kutuyu doğru şekilde yansıtmak için gereken haritanın görüntüleme sınırlarını hesaplar. Buna karşılık, daha karmaşık olan newLatLngBounds(boundary, width, height, padding) yönteminin döndürdüğü CameraUpdate değerini, harita düzene geçmeden önce bile istediğiniz zaman kullanabilirsiniz. Bunun nedeni, API'nin görüntüleme sınırlarını ilettiğiniz bağımsız değişkenlerden hesaplamasıdır.

Kullanıcının kaydırma işlemini belirli bir alanla kısıtlama

Yukarıdaki senaryolarda haritanın sınırlarını belirlersiniz ancak kullanıcı bu sınırların dışına kaydırabilir veya kaydırabilir. Bunun yerine, haritanın odak noktasının (kamera hedefi) enlem/boylam merkez sınırlarını kısıtlayarak kullanıcıların yalnızca bu sınırlar içinde kaydırma ve yatay kaydırma yapmasına izin verebilirsiniz. Ö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.

Kotlin

// Create a LatLngBounds that includes the city of Adelaide in Australia.
val adelaideBounds = LatLngBounds(
    LatLng(-35.0, 138.58), // SW bounds
    LatLng(-34.9, 138.61), // NE bounds
)

// Constrain the camera target to the Adelaide bounds.
map.setLatLngBoundsForCameraTarget(adelaideBounds)

      

Java

// Create a LatLngBounds that includes the city of Adelaide in Australia.
LatLngBounds adelaideBounds =
        new LatLngBounds(
                new LatLng(-35.0, 138.58), // SW bounds
                new LatLng(-34.9, 138.61) // NE bounds
                );

// Constrain the camera target to the Adelaide bounds.
map.setLatLngBoundsForCameraTarget(adelaideBounds);

      

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ı alanda kaldığı sürece kaydırma ve pan yapabilir. Çarpı işareti, kamera hedefini temsil eder:

Görüntü alanından daha büyük bir kamera LatLngBounds değerini 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 hedefinin, kamera LatLngBounds'un sağ alt köşesinde konumlandırıldığını gösteren diyagram.

Aşağıdaki diyagramda, kamera hedefinin çok kısıtlı sınırları vardır. Bu nedenle, kullanıcıya haritayı kaydırma veya kaydırma için çok az fırsat sunulur. Çarpı işareti, kamera hedefini temsil eder:

Görüntü alanından daha küçük bir kamera LatLngBounds'unu gösteren diyagram.

Kamera görünümü güncelleniyor

Haritaya CameraUpdate uygulamak için kamerayı anında hareket ettirebilir veya kameraya sorunsuz bir şekilde animasyon uygulayabilirsiniz. Kamerayı verilen CameraUpdate ile anında hareket ettirmek için GoogleMap.moveCamera(CameraUpdate) işlevini çağırabilirsiniz.

Özellikle kısa hareketler için değişikliğe animasyon ekleyerek kullanıcı deneyimini daha keyifli hale getirebilirsiniz. Bunu yapmak için GoogleMap.moveCamera yerine GoogleMap.animateCamera yöntemini çağırın. Harita, yeni özelliklere sorunsuz bir şekilde taşınır. Bu yöntemin en ayrıntılı biçimi olan GoogleMap.animateCamera(cameraUpdate, duration, callback) üç bağımsız değişken sunar:

cameraUpdate
Kameranın nereye hareket ettirileceğini açıklayan CameraUpdate.
callback
GoogleMap.CancellableCallback'yi uygulayan bir nesne. Görevleri işlemek için kullanılan bu genelleştirilmiş arayüz, `onCancel()` ve `onFinished()` olmak üzere iki yöntem tanımlar. Animasyon için yöntemler aşağıdaki durumlarda çağrılır:
onFinish()
Animasyon kesintisiz olarak tamamlanırsa çağrılır.
onCancel()

Animasyon, stopAnimation() çağrılarak veya yeni bir kamera hareketi başlatılarak kesintiye uğrarsa çağrılır.

Alternatif olarak, GoogleMap.stopAnimation() yöntemini çağırırsanız da bu durum yaşanabilir.

duration
Animasyonun milisaniye cinsinden istenen süresi (int olarak).

Aşağıdaki kod snippet'lerinde, kamerayı hareket ettirmenin yaygın yöntemlerinden bazıları gösterilmektedir.

Kotlin

val sydney = LatLng(-33.88, 151.21)
val mountainView = LatLng(37.4, -122.1)

// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 15f))

// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn())

// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10f), 2000, null)

// Construct a CameraPosition focusing on Mountain View and animate the camera to that position.
val cameraPosition = CameraPosition.Builder()
    .target(mountainView) // Sets the center of the map to Mountain View
    .zoom(17f) // Sets the zoom
    .bearing(90f) // Sets the orientation of the camera to east
    .tilt(30f) // Sets the tilt of the camera to 30 degrees
    .build() // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition))

      

Java

LatLng sydney = new LatLng(-33.88, 151.21);
LatLng mountainView = new LatLng(37.4, -122.1);

// Move the camera instantly to Sydney with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 15));

// Zoom in, animating the camera.
map.animateCamera(CameraUpdateFactory.zoomIn());

// Zoom out to zoom level 10, animating with a duration of 2 seconds.
map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

// Construct a CameraPosition focusing on Mountain View and animate the camera to that
// position.
CameraPosition cameraPosition =
        new CameraPosition.Builder()
                .target(mountainView) // Sets the center of the map to Mountain View
                .zoom(17) // Sets the zoom
                .bearing(90) // Sets the orientation of the camera to east
                .tilt(30) // Sets the tilt of the camera to 30 degrees
                .build(); // Creates a CameraPosition from the builder
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));