Kamera ve görünüm

Platform seçin: Android iOS JavaScript

Android için Haritalar SDK'sındaki haritalar, kolay hareketlerle eğilip döndürülebilir. Böylece kullanıcılar haritayı kendileri için uygun bir yönde ayarlayabilir. Vektör tabanlı harita karolarının daha küçük boyutu sayesinde, herhangi bir yakınlaştırma düzeyinde haritayı kaydırabilir veya perspektifini çok az gecikmeli olarak 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ünyanın yüzeyini (bir küre) cihazınızın ekranında (düz bir düzlem) gösterir. Dünya kendi etrafında sorunsuz bir şekilde döndüğü için doğu ve batı yönünde harita sonsuz olarak 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, boylamsal olarak sonlu bir genişliğe ancak enlemsel olarak sonsuz bir yüksekliğe sahiptir. Elde edilen harita şeklini kare yapmak için Mercator projeksiyonunu yaklaşık +/- 85 derece kullanarak temel harita görüntülerini "keseriz". Bu işlem, karo seçimi için daha kolay bir mantık sağlar.

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çilerde, yer paylaşımlarında veya diğer grafiklerde herhangi bir değişiklik yapmaz. Ancak eklediğiniz öğeleri yeni görünüme daha iyi uyacak şekilde değiştirmek isteyebilirsiniz.

Haritada kullanıcı hareketlerini dinleyebildiğiniz için kullanıcı isteklerine yanıt olarak haritayı değiştirebilirsiniz. Örneğin, geri çağırma yöntemi OnMapClickListener.onMapClick() haritaya tek bir dokunuşa yanıt verir. Yöntem, dokunma konumunun enlem ve boylamasını aldığından, ekranı kaydırarak veya yakınlaştırarak o noktaya yanıt verebilirsiniz. İşaretçi balonuna yapılan dokunmalara veya işaretçi üzerinde yapılan sürükleme hareketlerine yanıt vermek için benzer yöntemler kullanılabilir.

Ayrıca kamera hareketlerini de dinleyebilirsiniz. Böylece, kamera hareket etmeye başladığında, hareket halindeyken veya hareket etmeyi bıraktığında uygulamanız bildirim alır. Ayrıntılar için kamera değiştirme etkinlikleri kılavuzunu inceleyin.

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 alı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 düzeyi 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 öyle ayarlanır ki dünyanın tamamı yaklaşık 256 dp (yoğunluktan bağımsız 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 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 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.

Kamerayı hareket ettirme

Haritalar API, haritanın hangi kısmının görünür olacağını değiştirmenize olanak tanır. Bu işlem, haritayı hareket ettirmek yerine kameranın konumunu değiştirerek yapılır.

Kamerayı değiştirdiğinizde, kamera hareketini animasyonlu hale getirme seçeneğiniz vardır. Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında geçiş yapar. Animasyonun süresini de kontrol edebilirsiniz.

Kameranın konumunu değiştirmek için CameraUpdate kullanarak kamerayı nereye taşımak istediğinizi 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 artıran bir CameraUpdate döndürür.

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

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

Tercih ettiğiniz minimum ve/veya maksimum yakınlaştırma seviyesini ayarlamak yararlı olabilir. Örneğin, uygulamanız bir önemli yer etrafında tanımlanmış bir alanı gösteriyorsa veya sınırlı sayıda yakınlaştırma düzeyi içeren özel bir karo yer paylaşımı kullanıyorsanız kullanıcının deneyimini kontrol etmek için bu özelliği kullanabilirsiniz.

Kotlin



private lateinit var map: GoogleMap

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

      

Java


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

      

API'nin, kullanıcıların çok yakın veya çok uzaklaştırma yapmasını engelleyebilecek teknik hususlar olduğunu unutmayın. Örneğin, uydu veya arazi görünümü, temel harita karolarına kıyasla daha düşük bir maksimum yakınlaştırma değerine sahip olabilir.

Kamera konumunu değiştirme

Sık kullanılan konum değişiklikleri için iki kolay yöntem vardır. CameraUpdateFactory.newLatLng(LatLng), diğer tüm özellikleri koruyarak kameranın enlem ve boylamını değiştiren bir CameraUpdate döndürür. CameraUpdateFactory.newLatLngZoom(LatLng, float), diğer tüm özellikleri koruyarak kameranın enlem, boylam ve yakınlaştırma ayarlarını değiştiren bir CameraUpdate döndürür.

Kamera konumunu değiştirme konusunda tam esneklik için CameraUpdateFactory.newCameraPosition(CameraPosition) simgesini kullanın. Bu simge, 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), kameranın enlem ve boylamını, haritanın belirtilen piksel sayısı kadar hareket edecek şekilde değiştiren bir CameraUpdate döndürür. Pozitif x değeri, kameranın sağa doğru 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. Buna karşılık, negatif x değerleri kameranın sola hareket etmesine neden olur. Böylece harita sağa doğru 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ır belirleme

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

Bazen kamerayı, ilgilenilen alanın tamamının mümkün olan en yüksek yakınlaştırma düzeyinde görüleceği şekilde hareket ettirmek yararlı olabilir. Örneğin, kullanıcının mevcut konumundan beş mil içindeki tüm benzin istasyonlarını gösteriyorsanız kamerayı tüm istasyonların ekranda görüneceği şekilde hareket ettirebilirsiniz. Bunu yapmak için önce ekranda görünmesini istediğiniz LatLngBounds değerini hesaplayın. Ardından, kamera konumunu belirtilen LatLngBounds tamamen haritaya sığacak şekilde değiştiren bir CameraUpdate elde etmek için CameraUpdateFactory.newLatLngBounds(LatLngBounds bounds, int padding)'ü kullanabilirsiniz. Bu işlemde, belirtilen dolgu (piksel cinsinden) dikkate alınır. 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ı aşırı kenarlıkları dahil etmek yerine bir sınır içinde merkezlemek isteyebilirsiniz. Örneğin, sabit bir yakınlaştırmayla kamerayı bir ülkeye odaklamak için. Bu durumda, LatLngBounds oluşturarak ve CameraUpdateFactory.newLatLngZoom(LatLng latLng, float zoom) ile LatLngBounds kullanarak benzer bir yöntem kullanabilirsiniz.getCenter() yöntemini kullanın. 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üklemesi, bir dikdörtgen için piksel cinsinden bir genişlik ve yükseklik belirtmenize olanak tanır. Bu genişlik ve yükseklik, haritanın boyutlarına karşılık gelir. Dikdörtgen, merkezi haritanın görünümüyle aynı olacak şekilde yerleştirilir (böylece belirtilen boyutlar haritanın görünümüyle aynıysa dikdörtgen haritanın görünümüyle çakışır). Döndürülen CameraUpdate, kamerayı, belirtilen LatLngBounds'ın gerekli dolgu dikkate alınarak mümkün olan en yüksek yakınlaştırma düzeyinde, belirtilen dikdörtgen içinde ekranda ortalanacağı şekilde hareket ettirir.

Not: CameraUpdate oluşturmak için yalnızca daha basit newLatLngBounds(boundary, padding) yolunu kullanın. Bu yöntem, harita düzene girdikten sonra kamerayı hareket ettirmek için kullanılacaksa tercih edilmelidir. API, düzen sırasında 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, API görüntüleme sınırlarını ilettiğiniz bağımsız değişkenlerden hesapladığından, daha karmaşık yöntem newLatLngBounds(boundary, width, height, padding) tarafından döndürülen CameraUpdate değerini dilediğiniz zaman, hatta harita düzene girmeden önce bile kullanabilirsiniz.

Kullanıcının kaydırma hareketini belirli bir alana kısıtlama

Yukarıdaki senaryolarda haritanın sınırlarını siz belirlersiniz ancak kullanıcı 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) enlem/boylam 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ıtlamak isteyebilir. Bu durumda kullanıcılar, bu sınırlar içinde kaydırma ve yakınlaştırma yapabilir.

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 ş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ı alanda 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 LatLngBounds'ı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 alanda daha fazla kaydıramaz. Aşağıdaki diyagramda bu senaryo gösterilmektedir. Haç, kamera hedefini gösterir:

Kamera LatLngBounds'ının sağ alt köşesinde konumlandırılmış kamera hedefini gösteren diyagram.

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

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

Kamera görüntüsünü güncelleme

Haritaya CameraUpdate uygulamak için kamerayı anında hareket ettirebilir veya kamerayı sorunsuz bir şekilde hareket ettirebilirsiniz. Kamerayı CameraUpdate ile anında hareket ettirmek için GoogleMap.moveCamera(CameraUpdate)'ü çağırabilirsiniz.

Değişikliği animasyonlu hale getirerek, özellikle kısa hareketler için kullanıcı deneyimini daha keyifli hale getirebilirsiniz. Bunu yapmak için GoogleMap.moveCamera yerine GoogleMap.animateCamera numarayı arayın. Harita, yeni özelliklere sorunsuz bir şekilde geçer. 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 taşınacağını açıklayan CameraUpdate
callback
GoogleMap.CancellableCallback sınıfını uygulayan bir nesne. Görevleri işlemek için kullanılan bu genelleştirilmiş arayüzde iki yöntem tanımlanır: "onCancel" ve "onFinished". 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() numaralı telefonu aradığınızda da bu durumla karşılaşabilirsiniz.

duration
Animasyonun int olarak milisaniye cinsinden istenen süresi.

Aşağıdaki kod snippet'lerinde, kamerayı hareket ettirmenin yaygın yollarından 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));