Kamera kontrollerini yapılandırma

Platform seçin: Android iOS JavaScript

Kullanıcılar, harita üzerinde hareketleri kullanarak kameranın yakınlaştırma, eğme, konum ve dönüşünü kontrol edebilir. Kamerayı programatik olarak da yapılandırabilirsiniz.

3D kamera modelini gösteren diyagram

Kamera Konumu

Harita görünümü, uzayda belirli bir noktaya bakan bir kamera olarak modellenir. Kameranın konumu ve yönü; enlem/boylam/rakım koordinatları ("merkez" olarak tanımlanır ve kameranın baktığı yeri gösterir), yön, eğim, menzil ve dönüş ile tanımlanır.

Merkez (enlem, boylam, rakım)

Merkez, kameranın gözlemlediği 3D uzaydaki belirli noktayı tanımlar. Bu, enlem, boylam ve rakım değerlerini birleştiren LatLngAltitude sınıfı kullanılarak belirtilir. Bu sayede kameranın odak noktasını üç boyutta konumlandırabilirsiniz.

Enlem, -90 ile 90 derece arasında (bu değerler dahil) olabilir. Boylam, -180 ile 180 derece arasındadır (bu değerler dahil). Rakım metre cinsinden belirtilir ve rakımın nasıl yorumlanacağı kameranın altitudeMode (varsayılan olarak AltitudeMode.ABSOLUTE, AltitudeMode.RELATIVE_TO_GROUND veya AltitudeMode.RELATIVE_TO_MESH) tarafından belirlenir.

Başlık

Yön, haritanın pusula yönünü belirtir ve gerçek kuzeyden saat yönünde derece cinsinden ölçülür. Kuzey 0 dereceye, Doğu 90 dereceye, Güney 180 dereceye ve Batı 270 dereceye karşılık gelir.

Yatır

Eğim, kameranın dikey eksene göre açısını derece cinsinden belirtir. 0 derecelik eğim, kameranın doğrudan Dünya'ya (nadir) baktığı anlamına gelir. 90 derecelik bir eğim, kameranın yön tarafından belirtilen yönde yatay olarak baktığı anlamına gelir.

Aralık

Menzil, kameranın kendi konumu ile haritanın merkezi arasındaki mesafeyi metre cinsinden tanımlar. Aralık sıfır metreden (çok yakın) altmış üç milyon metreye kadar değişebilir. Bu sayede çok yakından bakabilir veya küresel bir perspektif elde edebilirsiniz. Bu, haritanın ne kadar "yakınlaştırılmış" veya "uzaklaştırılmış" görüneceğini etkili bir şekilde kontrol eder.

Döndür

Yana yatma, kameranın ufka göre açısını derece cinsinden ayarlar. Bu parametre, uçuş simülasyonları sırasında yatış gibi efektler oluşturmak, hatta kamerayı görüntüleme ekseni etrafında döndürerek tam bir tono hareketi oluşturmak için kullanılabilir.

Kamerayı kontrol etme

Aşağıdaki kod örneğinde, GoogleMap3D üzerinde setCamera yöntemini çağırarak Camera öğesinin programatik olarak nasıl kontrol edileceği gösterilmektedir. Bu kod örneğini kullanmak için Kurulum ve Uygulamanıza 3D harita ekleme bölümlerindeki talimatları uygulayarak Android Studio projenizi temel bir 3D haritayla oluşturun. Ardından, MainActivity.kt dosyasına aşağıdaki kodu ekleyin:


// Add imports
import com.google.android.gms.maps3d.model.Map3DMode
import com.google.android.gms.maps3d.model.camera
import com.google.android.gms.maps3d.model.latLngAltitude

// Add to the onMap3DViewReady method, after the googleMap3D object has been initialized
googleMap3D.setMapMode(Map3DMode.HYBRID)
googleMap3D.setCamera(
    camera {
        center = latLngAltitude {
            latitude = 38.743502
            longitude = -109.499374
            altitude = 1467.0
        }
        heading = 350.0
        tilt = 58.1
        range = 138.2
        roll = 0.0
    }
)

Kullanıcı arayüzü kontrolleri

Android için Haritalar 3D SDK'sı, standart hareketlerin yanı sıra kameranın konumunu değiştirmek için kullanıcı arayüzü kontrolleri de sağlar.

  • Yakınlaştırma kontrolü, haritanın yakınlaştırma seviyesini değiştirmek için "+" ve "-" düğmelerini gösterir.
  • Taşıma kontrolü, haritanın merkezini değiştirmek için "←", "→", "↑" ve "↓" düğmelerini gösterir.
  • Döndürme kontrolleri, kameranın yönünü değiştirmek için "↺" ve "↻" simgelerini gösterir.
  • Eğme kontrolü, kameranın eğimini değiştirmek için "^" ve "⌄" simgelerini gösterir.
  • Pusula kontrolü, pusulanın kuzey yönünü gösterir ve kameranın kuzey yönüne sıfırlanmasına olanak tanır.

Aşağıdaki kod örneğinde, kullanıcı arayüzü kontrollerinin görünürlüğünün nasıl değiştirileceği gösterilmektedir:

```kotlin // İçe aktarmaları ekleyin import com.google.android.gms.maps3d.UiControlSettings import com.google.android.gms.maps3d.model.CompassControl import com.google.android.gms.maps3d.model.TiltControl import com.google.android.gms.maps3d.model.ZoomControl</p> <p>...</p> <p>val uiControlSettings = googleMap3D.getUiControlSettings()</p> <p>// Haritanın sağ kenarında kullanıcı arayüzü kontrollerini gösterin uiControlSettings?.setUiControlsPlacement( listOf(CompassControl(), ZoomControl(), TiltControl()), UiControlSettings.ControlPlacement.TRAILING )</p> <p>// Haritanın sağ kenarında kullanıcı arayüzü kontrollerini gizleyin uiControlSettings?.setUiControlsPlacement( emptyList(), UiControlSettings.ControlPlacement.TRAILING )