ตรึงเนื้อหาไว้ที่สถานที่จริง

อุปกรณ์ XR ที่รองรับ
คำแนะนำนี้จะช่วยคุณสร้างประสบการณ์การใช้งานสำหรับอุปกรณ์ XR ประเภทนี้
แว่นตา XR แบบใช้สาย

Anchor เชิงพื้นที่เป็นAnchor ประเภทหนึ่งที่ช่วยให้คุณวางเนื้อหา 3 มิติพร้อมพิกัดทางภูมิศาสตร์ได้โดยใช้ Geospatial API

Anchor เชิงพื้นที่ใช้ละติจูดและลองจิจูดเพื่อระบุตำแหน่ง ละติจูดและลองจิจูดจะกำหนดโดยข้อกำหนดเฉพาะของ WGS84 ซึ่งเป็นพิกัดเดียวกับที่แสดงในระบบ GPS ทั่วไป

ระบุละติจูดและลองจิจูดของสถานที่

หากคุณมีจุดที่สนใจที่เฉพาะเจาะจง ให้ใช้ Google Maps เพื่อระบุละติจูดและลองจิจูดของจุดนั้น โดยทำดังนี้

  1. ไปที่ Google Maps ในคอมพิวเตอร์เดสก์ท็อป
  2. ไปที่เลเยอร์ > เพิ่มเติม

    ปุ่มเลเยอร์ใน Google Maps

    ปุ่มเพิ่มเติมใน Google Maps

  3. เปลี่ยนประเภทแผนที่เป็นดาวเทียม และล้างช่องทำเครื่องหมายมุมมองโลกที่มุมซ้ายล่างของหน้าจอ

    ตัวเลือกประเภทแผนที่ใน Google Maps

    ซึ่งจะบังคับให้ใช้มุมมอง 2 มิติและกำจัดข้อผิดพลาดที่อาจเกิดขึ้นจากมุมมอง 3 มิติแบบเอียง

  4. ในแผนที่ ให้คลิกขวาที่ตำแหน่ง แล้วเลือกลองจิจูดและละติจูดเพื่อคัดลอกไปยังคลิปบอร์ด

แปลงตำแหน่งในพื้นที่ของผู้ใช้เป็น Anchor เชิงพื้นที่

หากเดินทางไปยังจุดที่น่าสนใจได้ คุณสามารถระบุละติจูด ลองจิจูด และระดับความสูงจากการอ่านค่าในพื้นที่โดยแปลงท่าทางของอุปกรณ์ในพื้นที่เป็นท่าทางเชิงพื้นที่

วางตำแหน่งเนื้อหาที่ Anchor ภูมิสารสนเทศ

Anchor เชิงภูมิสารสนเทศต้องมีค่าระดับความสูง ซึ่งสัมพันธ์กับทรงรี WGS84 หรือสัมพันธ์กับภูมิประเทศหรือหลังคา

  • สำหรับค่าระดับความสูงที่สัมพันธ์กับทรงรี WGS84 ให้ใช้ Geospatial.createAnchor ดังนี้

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

  • สำหรับค่าระดับความสูงที่สัมพันธ์กับภูมิประเทศหรือหลังคา ให้ใช้ Geospatial.createAnchorOnSurface โดยใช้ GeospatialSurface.TERRAIN และ GeospatialSurface.ROOFTOP ตามลำดับเพื่อระบุวิธีตีความระดับความสูงสุดท้าย ดังนี้

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

    เมื่อใช้ GeospatialSurface.ROOFTOP ระดับความสูงจะใช้ค่าเริ่มต้นเป็นระดับความสูงของภูมิประเทศเมื่อไม่ได้วางไว้บนอาคาร

จากนั้นตรวจสอบผลลัพธ์ของการเรียกใช้การสร้าง ดังนี้

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

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

สุดท้าย ให้ใช้ Anchor เพื่อวางตำแหน่งเนื้อหา 3 มิติ ดังนี้

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)