Kamera ve görünüm

Platform seçin: Android iOS JavaScript

Android için Haritalar SDK'sındaki haritalar kolay hareketlerle yatırılıp döndürülebilir. Bu sayede, kullanıcılar haritayı kendileri için uygun bir yöne göre ayarlayabilir. Tüm yakınlaştırma düzeylerinde, haritayı kaydırabilir veya vektör tabanlı harita döşemelerinin daha küçük kapladığı alan sayesinde, ç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 Google Haritalar SDK'sı da Mercator projeksiyonu kullanarak cihazınızın ekranındaki dünya yüzeyini (bir küre) gösterir. Dünya kendi etrafında kesintisiz bir şekilde gezinirken, doğu ve batı yönünde harita sonsuza kadar tekrarlanır. Kuzey ve güneyde harita yaklaşık 85 derece kuzey ve 85 derece güney yönünde sınırlandırılmıştır.

Not: Merkatör projeksiyonu, boylamsal olarak sınırlı genişliğe ancak yatay olarak sonsuz yüksekliğe sahiptir. Ortaya çıkan harita şeklini kare yapmak için Merkatör projeksiyonunu kullanarak temel harita görüntülerini yaklaşık +/- 85 derecede "kestik". Bu sayede karo seçiminde mantığı daha rahat kullandı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ş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 uygun olacak şekilde değiştirmek isteyebilirsiniz.

Haritada kullanıcı hareketlerini dinleyebildiğinizden, haritayı kullanıcı isteklerine göre değiştirebilirsiniz. Örneğin, geri çağırma yöntemi OnMapClickListener.onMapClick(), haritaya bir kez dokunmaya 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. İşaretçi balonuna dokunmalara yanıt vermek veya işaretçi üzerindeki sürükleme hareketine yanıt vermek için de benzer yöntemler kullanılabilir.

Ayrıca kamera hareketlerini de dinleyebilirsiniz. Böylece, kamera hareket etmeye başladığında, o anda hareket ettiğinde veya hareket etmeyi durdurduğunda uygulamanızın bir 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 bir kamera gibi modellenmiştir. Kameranın konumu (ve dolayısıyla haritanın oluşturulması) şu özelliklerle belirlenir: target (enlem/boylam konumu), bearing, tilt ve zoom.

Kamera özellikleri şeması

Hedef (yer)

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

Enlem, -85 ile 85 derece (bu değerler dahil) arasında olabilir. Bu aralığın üzerindeki veya altındaki değerler, aralık içindeki en yakın değere ayarlanır. Örneğin, enlemi 100 olarak ayarladığınızda değer 85 olarak ayarlanır. Boylam -180 ile 180 derece (bu değerler dahil) aralığındadır. Bu aralığın üzerindeki veya altındaki değerler, aralıkta (-180, 180) yer alacak şekilde sarmalanır. Örneğin, 480, 840 ve 1200 değerlerinin tamamı 120 dereceye ayarlanır.

Yönlendirme (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, yön, kameranın gerçek kuzey yönüne göre (derece cinsinden ölçülür) yönüne karşılık gelir.

Başlangıç noktası 0, haritanın üst kısmının gerçek kuzeyi gösterdiği anlamına gelir. Bitiş değeri 90, haritanın üst tarafı doğudan gelecek (pusulada 90 derece) anlamına gelir. 180 değeri, haritanın üst kısmı güneyde bulunan noktadır.

Google Haritalar API'sı bir haritanın yönünü değiştirmenize olanak tanır. Örneğin, araba kullanan bir kişi, seyahat yönüyle hizalamak için genellikle yol haritasını döndürürken, harita ve pusula kullanan yürüyüşçüler genellikle haritayı, dikey bir çizgi kuzeyi gösterecek şekilde yönlendirir.

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

Eğme, bir yay üzerinde kameranın konumunu doğrudan haritanın merkez konumu üzerinde tanımlar. Bu konum, nadirden (kameranın doğrudan altını gösteren yön) derece cinsinden ölçülür. 0 değeri, doğrudan aşağı doğru gösterilen kameraya karşılık gelir. 0'dan büyük değerler, belirtilen derece sayısı ile ufka doğru eğimli bir kameraya karşılık gelir. Görüntüleme açısını değiştirdiğinizde, harita perspektifte, uzaktaki özellikler daha küçük, yakındaki özellikler ise daha büyük görünür. Aşağıdaki resimlerde bu durum gösterilmektedir.

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

Kameranın 0 derece görüntüleme açısı, 18 yakınlaştırma düzeyinde ekran görüntüsü.
Harita, kameranın varsayılan görüntüleme açısıyla gösterilir.
Kameranın varsayılan konumunu, doğrudan harita konumu ü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 3. konuma gelecek şekilde, düz yukarıdan (0 derece) ve zemin (90 derece) arasında bir yay boyunca yarıya doğru hareket ettiğine dikkat edin. Kamera hâlâ haritanın merkez noktasını gösteriyor, ancak 4 konumundaki çizgiyle temsil edilen alan artık görünüyor.

45 derece görüntüleme açısında 18 yakınlaştırma düzeyinde kameraya sahip bir haritanın ekran görüntüsü.
Harita, 45 derece görüntüleme açısıyla görüntülenir.
Yakınlaştırma seviyesi hâlâ 18 iken kameranın görüntüleme açısının 45 dereceye ayarlandığını gösteren şema.
45 derecelik kamera görüntüleme açısı.

Bu ekran görüntüsündeki harita hâlâ orijinal haritadakiyle aynı noktanın ortasındadır, ancak haritanın üst kısmında daha fazla özellik görünmektedir. Açıyı 45 dereceden fazla artırdığınızda kamera ile harita konumu arasındaki özellikler orantılı olarak daha büyük görünürken harita konumu dışındaki özellikler de orantılı olarak daha küçük görünür ve üç boyutlu bir etki elde eder.

Tarih aralığını

Kameranın yakınlaştırma düzeyi, haritanın ölçeğini belirler. Daha büyük yakınlaştırma düzeylerinde ekranda daha fazla ayrıntı, daha düşük zum düzeylerinde ise ekranda dünyanın daha fazla kısmı görülebilir. 0. yakınlaştırma düzeyinde haritanın ölçeği, tüm dünyanın yaklaşık 256 dp genişliğe sahip olacağı şekildedir (yoğunluktan bağımsız pikseller).

Yakınlaştırma düzeyini 1 artırmak, ekrandaki dünyanın genişliğini iki katına çıkarır. 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 düzeyi 2'de tüm dünya yaklaşık 1024 dp genişliğindedir.

Yakınlaştırma düzeyinin tam sayı olması gerekmez. Haritanın izin verdiği yakınlaştırma seviyeleri; hedef, harita türü ve ekran boyutu gibi çeşitli faktörlere bağlıdır. Aralığın dışındaki herhangi bir sayı, en yakın geçerli değere dönüştürülür. Bu değer, minimum 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: Karalar/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 düzeyindeki bir harita.
15 yakınlaştırma düzeyindeki bir haritanın ekran görüntüsü
15. yakınlaştırma düzeyinde bir harita.
20. yakınlaştırma düzeyindeki bir haritanın ekran görüntüsü
20. yakınlaştırma seviyesindeki bir harita.

Kamerayı hareket ettirme

Google Haritalar API'si, haritada dünyanın hangi bölümünün görüneceğini değiştirmenize olanak tanır. Bu, haritayı hareket ettirmek yerine kameranın konumunu değiştirerek gerçekleştirilir.

Kamerayı değiştirdiğinizde, oluşan kamera hareketini animasyon etme 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ı hareket ettirmek 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 düzeyini 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 düzeyini 1,0 değiştiren bir CameraUpdate verir.

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

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

Tercih ettiğiniz bir minimum ve/veya maksimum yakınlaştırma düzeyini ayarlamak size yardımcı olabilir. Örneğin, uygulamanız bir önemli yerin çevresinde tanımlı bir alan gösteriyorsa veya sınırlı sayıda yakınlaştırma düzeyine sahip özel bir karo yer paylaşımı kullanıyorsanız bu, kullanıcı deneyimini kontrol etmek açısından 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 düşük veya çok yüksek yakınlaştırma yapmasına izin vermesini engelleyebilecek teknik hususlar bulunduğunu unutmayın. Örneğin, uydu veya arazi, temel harita parçalarından daha düşük bir maksimum yakınlaştırma değerine sahip olabilir.

Kameranın konumunu değiştirme

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

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

Kaydırma (kaydırma)

CameraUpdateFactory.scrollBy(float, float), kameranın enlem ve boylamını harita belirtilen piksel sayısı kadar hareket edecek şekilde değiştiren bir CameraUpdate sağlar. Pozitif bir x değeri, kameranın sağa doğru hareket etmesine neden olarak harita sola gitmiş gibi görünür. Pozitif bir y değeri, kameranın aşağı hareket etmesine neden olarak harita yukarı çıkmış gibi görünür. Buna karşılık, negatif x değerleri kameranın sola hareket etmesine neden olur. Dolayısıyla, harita sağa ve negatif y değerleri hareket etmiş gibi görünür. Bu durum, kameranın yukarı hareket etmesine neden olur. Kaydırma, kameranın mevcut yönüne göredir. Ö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ı mümkün olan en büyük yakınlaştırma düzeyinde görünecek şekilde harekete geçirmek yararlı olur. Örneğin, kullanıcının mevcut konumundan 5 km mesafedeki tüm benzin istasyonlarını görüntülüyorsanız kamerayı, tümü ekranda görünecek şekilde hareket ettirmek isteyebilirsiniz. Bunu yapmak için önce ekranda görünmesini istediğiniz LatLngBounds değerini hesaplayın. Ardından, belirtilen LatLngBounds öğesi haritaya tamamen uyacak şekilde, belirtilen dolguyu (piksel cinsinden) hesaba katarak 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 yatırma ve açısı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 dahilinde ortalama

Bazı durumlarda, kameranızı aşırı kenarlıkları eklemek yerine bir sınırlar içinde ortalamak isteyebilirsiniz. Örneğin, kamerayı bir ülkenin merkezine sabit yakınlaştırmak için kullanabilirsiniz. Bu durumda, LatLngBounds oluşturup LatLngBounds ile CameraUpdateFactory.newLatLngZoom(LatLng latLng, float zoom) kullanarak benzer bir yöntem kullanabilirsiniz.getCenter() yöntemini çağırın. getCenter() yöntemi, LatLngBounds 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, dikdörtgen için genişliği ve yüksekliği piksel cinsinden belirtmenize olanak tanır. Bunların, haritanın boyutlarına karşılık gelmesi amaçlanır. Dikdörtgen, harita görünümünün merkeziyle aynı olacak şekilde yerleştirilir (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 değeri, kamerayı gereken dolguyu hesaba katarak mümkün olan en geniş yakınlaştırma düzeyinde belirtilen LatLngBounds dikdörtgen içinde ekranın ortasına gelecek şekilde hareket ettirir.

Not: Harita düzenlendikten sonra kamerayı hareket ettirmek için kullanılacaksa CameraUpdate oluşturmak için yalnızca daha basit bir yöntem olan newLatLngBounds(boundary, padding) yöntemini 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, API görüntüleme sınırlarını aktardığınız bağımsız değişkenlere göre hesapladığı için, daha karmaşık bir yöntem olan newLatLngBounds(boundary, width, height, padding) tarafından döndürülen CameraUpdate yöntemini istediğiniz zaman, harita düzenlenmeden önce bile kullanabilirsiniz.

Kullanıcının kaydırma işlevini belirli bir alanla sınırlama

Yukarıdaki senaryolarda, haritanın sınırlarını ayarlarsınız ancak kullanıcı daha sonra bu sınırların dışına kaydırabilir veya yatay kaydırabilir. Bunun yerine, kullanıcıların yalnızca bu sınırlar dahilinde kaydırma ve yatay kaydırma yapabilmesi için haritanın odak noktasının (kamera hedefi) enlem/boylam merkez sınırlarını sınırlamak isteyebilirsiniz. Örneğin, bir alışveriş merkezine veya havaalanına ait bir perakende uygulaması, haritayı belirli bir sınırlarla sınırlamak ve böylece kullanıcıların bu sınırlar içinde kaydırmak için uygun olmasını 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. Kullanıcı, kamera hedefinin sınırlı alan içinde kalması şartıyla ekranı kaydırıp kaydırabilir. Artı işareti, kamera hedefini temsil eder:

Görüntü alanından daha büyük olan bir kamera EnlBoyBounds'unu gösteren şema.

Harita, görüntü alanının tanımlanan sınırların dışında kalan alanları göstermesine neden olsa bile, görüntü alanını her zaman doldurur. Örneğin, kamera hedefini sınırlı alanın bir köşesine konumlandırırsanız köşenin ötesindeki alan görüntü alanında görünür, ancak kullanıcılar bu alanın içine daha fazla kaydıramaz. Aşağıdaki şemada bu senaryo gösterilmektedir. Artı işareti, kamera hedefini temsil eder:

Kameranın LatLngBounds'unun sağ alt köşesinde kamera hedefini gösteren şema.

Aşağıdaki şemada, kamera hedefinin sınırları son derece kısıtlıdır ve bu da kullanıcıya haritayı kaydırmak veya kaydırmak için çok az fırsat sunmaktadır. Artı işareti, kamera hedefini temsil eder:

Görüntü alanından daha küçük bir kamera EnlBoyBounds'unu gösteren şema.

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

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

Değişimi canlandırarak, özellikle kısa hareketlerde kullanıcı deneyimini daha keyifli hale getirebilirsiniz. Bunu yapmak için GoogleMap.moveCamera yerine GoogleMap.animateCamera numaralı telefonu arayın. Harita sorunsuz şekilde yeni özelliklere 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
Kamerayı nereye taşıyacağınızı açıklayan CameraUpdate.
callback
GoogleMap.CancellableCallback uygulayan bir nesne. Görevlerin işlenmesine yönelik bu genelleştirilmiş arayüz, "onCancel()" ve "onFinished()" iki yöntemini tanımlar. Animasyon için yöntemler aşağıdaki durumlarda çağrılır:
onFinish()
Animasyon kesintiye uğramadan tamamlanırsa ç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() yöntemini çağırdığınızda da bu durumla karşılaşabilirsiniz.

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

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