İçeriği gerçek dünyadaki konumlara sabitleme

Uygun XR cihazlar
Bu kılavuz, bu tür XR cihazları için deneyimler geliştirmenize yardımcı olur.
Kablolu XR Gözlükleri

Coğrafi yer işaretleri, Geospatial API'yi kullanarak coğrafi koordinatlarla 3D içerik yerleştirmenize olanak tanıyan bir yer işareti türüdür.

Coğrafi konum bağlayıcıları, konumlarını belirlemek için enlem ve boylam kullanır. Enlem ve boylam, WGS84 spesifikasyonu ile tanımlanır. Bunlar, tipik bir GPS sisteminde gösterilen koordinatlarla aynıdır.

Bir konumun enlem ve boylamını belirleme

Aklınızda belirli bir önemli yer varsa enlem ve boylamını belirlemek için Google Haritalar'ı kullanın:

  1. Masaüstü bilgisayarda Google Haritalar'a gidin.
  2. Katmanlar > Diğer'e gidin.

    Google Haritalar'daki katmanlar düğmesi

    Google Haritalar'daki Diğer düğmesi

  3. Harita Türü'nü Uydu olarak değiştirin ve ekranın sol alt köşesindeki Yerküre Görünümü onay kutusunun işaretini kaldırın.

    Google Haritalar'daki harita türü seçenekleri

    Bu, 2D perspektifi zorunlu kılar ve açılı bir 3D görünümden kaynaklanabilecek olası hataları ortadan kaldırır.

  4. Haritada konumu sağ tıklayın ve panonuza kopyalamak için boylam ve enlemi seçin.

Kullanıcının alanındaki bir konumu coğrafi sabite dönüştürme

İlgilenilen noktaya seyahat edebiliyorsanız cihazın yerel pozunu coğrafi poza dönüştürerek yerel bir okumadan enlem, boylam ve rakımı belirleyebilirsiniz.

İçeriği bir coğrafi sabitleme noktasına yerleştirme

Coğrafi konum sabitleyiciler, WGS84 elipsoidine veya araziye ya da çatıya göre bir yükseklik değeri gerektirir.

  • WGS84 elipsoidine göre yükseklik değerleri için Geospatial.createAnchor kullanın:

    val createAnchorResult = geospatial.createAnchor(
        latitude,
        longitude,
        altitude,
        Quaternion.Identity,
    )

  • Araziye veya çatıya göre yükseklik değerleri için Geospatial.createAnchorOnSurface kullanın. Nihai yüksekliğin nasıl yorumlanması gerektiğini belirtmek için sırasıyla GeospatialSurface.TERRAIN ve GeospatialSurface.ROOFTOP kullanın:

    val createAnchorResult = geospatial.createAnchorOnSurface(
        latitude,
        longitude,
        altitude,
        Quaternion.Identity,
        GeospatialSurface.TERRAIN,
    )

    GeospatialSurface.ROOFTOP kullanılırken rakım, bir binaya yerleştirilmediğinde varsayılan olarak arazi rakımına ayarlanır.

Ardından, oluşturma çağrısının sonucunu kontrol edin:

when (createAnchorResult) {
    is AnchorCreateSuccess -> {
        // Use anchorCreateResult.anchor to render content at the result.
    }

    else -> {
        // Anchor create failed.
        // See AnchorCreateResult for possible failure reasons.
    }
}

Son olarak, 3D içeriği konumlandırmak için sabitleyiciyi kullanın:

Compose XR

Subspace(FollowTarget.anchor(anchorCreateResult.anchor)) {
    SpatialPanel {
        GeospatialContent()
    }
}

SceneCore

val anchorSpace = AnchorSpace.create(session, anchorCreateResult.anchor)
val contentEntity = createGeospatialContentEntity(context, session)
anchorSpace.addChild(contentEntity)