Kamera ve görünüm

Platform seçin: Android iOS JavaScript

Android için Haritalar SDK'sındaki haritalar, kolay hareketlerle yatırılabilir ve döndürülebilir. Bu sayede, kullanıcılar haritayı kendileri için uygun olan bir yönde ayarlayabilir. Vektör tabanlı harita bloklarının daha küçük ayak izi sayesinde, herhangi bir yakınlaştırma düzeyinde haritayı kaydırabilir veya çok az gecikmeyle bakış açısını değiştirebilirsiniz.

Kod örnekleri

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

Giriş

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

Not: Merkatör projeksiyonu boylam olarak sonlu bir genişliğe, ancak yatay olarak sonsuz bir yüksekliğe sahiptir. Ortaya çıkan harita şeklini kare haline getirmek için Merkatör projeksiyonunu kullanarak yaklaşık +/- 85 derecelik temel harita görüntülerini "kestik" ve karo seçimini kolaylaştırdık.

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

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

Ayrıca kamera hareketlerini dinleyebilirsiniz. Böylece kamera hareket etmeye başladığında, şu anda hareket ettiğinde veya hareket etmediğinde uygulamanızın bildirim alması gerekir. Ayrıntılar için kamera değişikliği etkinlikleri kılavuzuna bakın.

Kamera konumu

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

Kamera özellikleri şeması

Hedef (konum)

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

Enlem, -85 ile 85 derece (her ikisi de dahil) arasında olabilir. Bu aralığın üstündeki veya altındaki değerler, bu aralıktaki en yakın değere sabitlenir. Örneğin, enlem 100 olarak belirtildiğinde değer 85 olarak ayarlanır. Boylam -180 ile 180 derece arasında değişir. Bu aralığın üzerindeki veya altındaki değerler, (-180, 180) aralığında olacak şekilde sarmalanır. Örneğin, 480, 840 ve 1200 değerlerinin tamamı 120 dereceye kadar sarmalanır.

Rulman (yön)

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

0 noktası, haritanın üst kısmının gerçek kuzeyi gösterdiği anlamına gelir. Yön değeri 90, doğuya alınması gereken harita noktalarının üst kısmıdır (pusulada 90 derece). 180 değeri, güneye doğru yapılması gereken harita noktalarının üst kısmı anlamına gelir.

Haritalar API'si bir haritanın yönünü değiştirmenize olanak tanır. Örneğin, araba kullanan bir kişi kendi seyahat yönü ile uyumlu bir yol haritası çevirir. Yürüyüşçüler ise harita ve pusulayı kullanarak genellikle haritayı dikey bir çizginin kuzeyi gösterecek şekilde yönlendirir.

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

Eğme, kameranın bir yay üzerinde doğrudan haritanın merkez konumunun üzerinde yer alan konumunu tanımlar. Konum, nadir'den (kameranın doğrudan altını gösteren yön) derece cinsinden ölçülür. 0 değeri, doğrudan aşağı doğru doğrulanan bir kameraya karşılık gelir. 0'dan büyük değerler, belirtilen sayıda dereceyle ufağa doğru eğilen bir kameraya karşılık gelir. Görüntüleme açısını değiştirdiğinizde, harita perspektif olarak görünür. Uzaktaki özellikler daha küçük, yakındaki özellikler ise daha büyük görünür. Aşağıdaki resimlerde bu gösterilmektedir.

Aşağıdaki resimlerde görüntüleme açısı 0 derecedir. İlk resimde bunun bir şeması gösterilmektedir. Konum 1 kamera konumu, 2. konum ise geçerli harita konumudur. Ortaya çıkan harita onun altında gösterilir.

Kamerası 0 görüntüleme açısında, 18 yakınlaştırma düzeyinde yerleştirilmiş 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 görüntüleme açısı.

Aşağıdaki resimlerde görüntüleme açısı 45 derecedir. Kameranın yukarıdan düz (0 derece) ile zemin (90 derece) arasında bir yay boyunca 3 konumuna kadar hareket ettiğine dikkat edin. Kamera hâlâ haritanın merkez noktasını işaret ediyor ancak 4 konumundaki çizginin temsil ettiği alan artık görülebiliyor.

Kameranın 45 derece görüntüleme açısında, 18 yakınlaştırma düzeyinde yerleştirildiği haritanın ekran görüntüsü.
45 derecelik görüntüleme açısıyla görüntülenen harita.
Kameranın görüş açısının 45 dereceye ayarlandığını, yakınlaştırma seviyesinin ise hâlâ 18'e ayarlandığını gösteren şema.
45 derecelik kamera görüş açısı.

Bu ekran görüntüsündeki harita, orijinal haritadakiyle aynı noktada ortadadır ancak haritanın üst kısmında daha fazla özellik görüntülenmiştir. Açıyı 45 derecenin üzerine çıkardığınızda, kamera ile harita konumu arasındaki öğeler orantılı olarak daha büyük görünürken harita konumunun dışındaki öğeler orantılı olarak daha küçük görünür ve üç boyutlu bir efekt elde eder.

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ı görülebilirken, daha küçük yakınlaştırma seviyelerinde ekranda dünyanın daha fazlası görülebilir. Yakınlaştırma seviyesi 0'da, haritanın ölçeği tüm dünyanın genişliği yaklaşık 256 dp (yoğunluktan bağımsız piksel) olacak şekilde belirlenir.

Yakınlaştırma düzeyini 1 artırdığınızda, ekrandaki yerküre 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 x 2N dp'dir. Örneğin, yakınlaştırma seviyesi 2 olduğunda tüm dünya yaklaşık 1024 dp genişliğe sahiptir.

Yakınlaştırma düzeyinin tam sayı olması gerekmez. Haritanın izin verdiği yakınlaştırma seviyeleri aralığı hedef, harita türü ve ekran boyutu gibi bir dizi faktöre bağlıdır. Aralık dışında kalan tüm sayılar, minimum yakınlaştırma seviyesi veya maksimum yakınlaştırma seviyesi olabilecek bir sonraki geçerli değere dönüştürülür. 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: Karalar/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:
5 yakınlaştırma düzeyindeki bir haritanın ekran görüntüsü
Yakınlaştırma seviyesi 5 olan bir harita.
15 yakınlaştırma düzeyindeki bir haritanın ekran görüntüsü
Yakınlaştırma seviyesi 15 olan bir harita.
20 yakınlaştırma düzeyinde bir haritanın ekran görüntüsü
Yakınlaştırma seviyesi 20 olan bir harita.

Kamerayı hareket ettirme

Maps API, dünyanın hangi bölümünün haritada görüneceğini değiştirmenize olanak tanır. Bu işlem, haritayı hareket ettirmek yerine kameranın konumunun değiştirilmesiyle gerçekleştirilir.

Kamerayı değiştirdiğinizde, sonuçta elde edilen kamera hareketini canlandırabilirsiniz. Animasyon, mevcut kamera özellikleri ile yeni kamera özellikleri arasında arapolasyon 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 farklı türde CameraUpdate oluşturmanıza olanak tanır. Aşağıdaki seçenekler kullanılabilir:

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

CameraUpdateFactory.zoomIn() ve CameraUpdateFactory.zoomOut() size, diğer tüm özellikleri aynı tutarken yakınlaştırma düzeyini 1,0 oranında değiştiren bir CameraUpdate verir.

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

CameraUpdateFactory.zoomBy(float) ve CameraUpdateFactory.zoomBy(float, Point), yakınlaştırma düzeyini verilen değere göre artıran (veya azaltan) bir CameraUpdate değerini verir. İkincisi ise ekrandaki belirli bir noktayı, aynı konumda (enlem/boylam) kalacak şekilde sabitler ve bunu başarmak için kameranın konumunu değiştirebilir.

Tercih ettiğiniz minimum ve/veya maksimum yakınlaştırma düzeyini ayarlamak yararlı olabilir. Örneğin, uygulamanız bir önemli yerin çevresinde tanımlı bir alan gösteriyorsa veya sınırlı bir yakınlaştırma seviyesi grubu ile özel bir karo yer paylaşımı kullanıyorsanız kullanıcı deneyimini kontrol etmek için bu özellik faydalıdır.

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 aşağı veya çok yukarı yakınlaştırmasına izin vermesini engelleyebilecek teknik hususlar olduğunu unutmayın. Örneğin, uydu veya arazinin maksimum yakınlaştırma değeri temel harita parçalarından daha düşük olabilir.

Kamera konumu değiştiriliyor

Sık karşılaşılan konum değişiklikleri için iki kolaylık yöntemi vardır. CameraUpdateFactory.newLatLng(LatLng), diğer tüm özellikleri korurken kameranın enlem ve boylamını değiştiren bir CameraUpdate verir. CameraUpdateFactory.newLatLngZoom(LatLng, float) size, diğer tüm özellikleri korurken kameranın enlem, boylam ve yakınlaştırma ayarlarını değiştiren bir CameraUpdate verir.

Kamera konumunu değiştirme konusunda tam esneklik için CameraUpdateFactory.newCameraPosition(CameraPosition) kullanarak kamerayı belirtilen konuma taşıyan bir CameraUpdate elde edebilirsiniz. CameraPosition, new CameraPosition() ile doğrudan veya new CameraPosition.Builder() kullanılarak CameraPosition.Builder ile elde edilebilir.

Kaydırma (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 verir. Pozitif x değeri kameranın sağa doğru hareket etmesine neden olur ve harita sola gitmiş gibi görünür. Pozitif bir y değeri kameranın aşağı hareket etmesine neden olur ve harita yukarı gitmiş gibi görünür. Öte yandan, negatif x değerleri kameranın sola doğru hareket etmesine neden olur. Dolayısıyla, harita sağa hareket etmiş gibi görünürken negatif y değerleri 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 dereceyse doğu yönü "yukarı"dır.

Sınır belirleme

Haritanın sınırlarını belirleme

Bazen kamerayı, ilgilenilen alanın tamamının mümkün olan en büyük yakınlaştırma düzeyinde görülebilecek şekilde hareket ettirmeniz yararlı olur. Örneğin, kullanıcının o anki konumuna 5 km mesafedeki tüm benzin istasyonlarını gösteriyorsanız, kamerayı hepsinin ekranda görüneceği şekilde hareket ettirebilirsiniz. Bunun için önce ekranda görünmesini istediğiniz LatLngBounds değerini hesaplayın. Daha sonra, belirtilen dolguyu (piksel cinsinden) hesaba katarak kamera konumunu, belirtilen LatLngBounds öğesini tamamen haritaya sığacak şekilde 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 yatmasının ve yönünün 0 olacağına dikkat edin.

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 içinde ortalama

Bazı durumlarda, kameranızı aşırı kenarlıklar yerine bir sınırlar içinde ortalamak isteyebilirsiniz. Örneğin, sabit yakınlaştırmayı korurken kamerayı bir ülkenin ortasına getirin. Bu durumda, bir LatLngBounds oluşturup CameraUpdateFactory.newLatLngZoom(LatLng latLng, float zoom) öğesini LatLngBounds ile birlikte kullanarak benzer bir yöntem kullanabilirsiniz.getCenter() yöntemini çağırı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));

      

Yöntemin aşırı yüklenmesi (newLatLngBounds(boundary, width, height, padding)), bir dikdörtgen için piksel cinsinden genişliği ve yüksekliği belirtmenizi sağlar. Burada amaç, bunların haritanın boyutlarına karşılık gelmesidir. Dikdörtgen, merkezi harita görünümüyle aynı olacak şekilde konumlandırılır (böylece belirtilen boyutlar harita görünümüyle aynıysa dikdörtgen harita görünümüyle çakışır). Döndürülen CameraUpdate, kamerayı, gerekli dolguyu hesaba katarak, belirtilen LatLngBounds dikdörtgen içinde mümkün olan en yüksek yakınlaştırma düzeyinde ortalanacak şekilde hareket ettirir.

Not: CameraUpdate oluşturmak için yalnızca, haritanın yerleşiminden sonra kamerayı hareket ettirmek amacıyla kullanılacaksa basit yöntemi (newLatLngBounds(boundary, padding)) 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 newLatLngBounds(boundary, width, height, padding) yönteminin döndürdüğü CameraUpdate yöntemini API, geçirdiğiniz bağımsız değişkenlerden gelen görüntüleme sınırlarını hesapladığı için harita düzene girmeden önce bile herhangi bir zamanda kullanabilirsiniz.

Kullanıcının kaydırma özelliğini belirli bir alanla kısıtlama

Yukarıdaki senaryolarda haritanın sınırlarını siz belirlersiniz ancak kullanıcı bu sınırların dışında kaydırma veya kaydırma yapabilir. Bunun yerine, haritanın odak noktasının (kamera hedefi) enl/boy merkezi sınırlarını sınırlandırmak isteyebilirsiniz. Böylece kullanıcılar yalnızca bu sınırlar dahilinde kaydırma ve kaydırma yapabilir. Örneğin, bir alışveriş merkezi veya havaalanına yönelik perakende uygulaması, haritayı belirli sınırlarla sınırlandırarak kullanıcıların bu sınırlar içinde kaydırma yapmasına ve kaydırma yapmasına olanak tanımak isteyebilir.

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 alanla sınırlandırıldığı bir senaryo gösterilmektedir. Kamera hedefi sınırlı alanda kaldığı sürece kullanıcı sayfayı kaydırabilir ve kaydırabilir. Çarpım, kamera hedefini temsil eder:

Görüntü alanından daha büyük olan bir kamera EnlBound Bounds değerini gösteren şema.

Harita, görüntü alanında tanımlanan sınırların dışında kalan alanlar gösterilse 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 ekranı bu alana daha fazla kaydıramaz. Aşağıdaki şemada bu senaryo gösterilmektedir. Çarpım, kamera hedefini temsil eder:

Kamera hedefini kamera LatLngBounds'un sağ alt köşesinde gösteren şema.

Aşağıdaki şemada, kamera hedefinin çok kısıtlı bir sınırı var. Bu da kullanıcının haritayı kaydırmasına veya kaydırmasına çok az olanak tanımasıdır. Çarpım, kamera hedefini temsil eder:

Görüntü alanından daha küçük bir kamera EnlBoundBounds değerini gösteren şema.

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

Haritaya CameraUpdate uygulamak için kamerayı anında hareket ettirebilir veya kameraya yumuşak bir animasyon uygulayabilirsiniz. Verilen CameraUpdate ile kamerayı anında hareket ettirmek için GoogleMap.moveCamera(CameraUpdate) numaralı telefonu arayabilirsiniz.

Değişikliği canlandırarak özellikle kısa hamlelerde kullanıcı deneyimini daha hoş hale getirebilirsiniz. GoogleMap.moveCamera çağrısı yerine bunu yapmak için GoogleMap.animateCamera numaralı telefonu arayın. Harita, yeni özelliklere sorunsuz geçiş yapacaktı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 taşınacağı yeri açıklayan CameraUpdate.
callback
GoogleMap.CancellableCallback kullanan bir nesne. Görevlerin işlenmesine yönelik bu genelleştirilmiş arayüz, "onCancel()" ve "onFinished()" olarak iki yöntem tanımlar. Animasyon için yöntemler aşağıdaki durumlarda çağrılır:
onFinish()
Animasyon kesintisiz olarak sonuna kadar giderse çağrılır.
onCancel()

Animasyon stopAnimation() çağrısı yapılarak veya yeni bir kamera hareketi başlatılarak kesilirse çağrılır.

Alternatif olarak, GoogleMap.stopAnimation() çağrısı yaptığınızda da bu durum gerçekleşebilir.

duration
Animasyonların istenen süresi (milisaniye cinsinden) int olarak.

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));