محتوا را در مکان‌های دنیای واقعی لنگر کنید

دستگاه‌های XR واجدشرایط
این راهنمایی به شما کمک می‌کند برای این نوع دستگاه‌های واقعیت گسترده تجربه بسازید.
عینک واقعیت گسترده سیمی

لنگرهای زمین‌مکانی نوعی لنگر هستند که به شما امکان می‌دهند بااستفاده از Geospatial API، محتوای سه‌بعدی را با مختصات جغرافیایی قرار دهید.

لنگرهای زمین‌مکانی از طول و عرض جغرافیایی برای تعیین موقعیت خود استفاده می‌کنند. طول و عرض جغرافیایی با مشخصات WGS84 تعریف می‌شود، که همان مختصات نشان‌داده‌شده در سیستم GPS معمولی است.

تعیین طول و عرض جغرافیایی مکان

اگر مکان جالب خاصی مدنظرتان است، از Google Maps برای تعیین طول و عرض جغرافیایی آن استفاده کنید:

  1. در رایانه رومیزی، به Google Maps بروید.
  2. به لایه‌ها > بیشتر بروید.

    دکمه لایه‌ها در Google Maps

    دکمه بیشتر در Google Maps

  3. نوع نقشه را به ماهواره تغییر دهید و چارگوش انتخاب نمای کره زمین را در گوشه پایین سمت راست صفحه پاک کنید.

    گزینه‌های نوع نقشه در Google Maps

    این کار باعث می‌شود که پرسپکتیو دوبعدی اعمال شود و خطاهای احتمالی ناشی از نمای سه‌بعدی زاویه‌دار برطرف شود.

  4. در نقشه، روی مکان کلیک راست کنید و طول و عرض جغرافیایی را انتخاب کنید تا در بریده‌دان کپی شود.

تبدیل موقعیتی در منطقه کاربر به لنگر جغرافیایی

اگر می‌توانید به مکان جالب سفر کنید، می‌توانید عرض جغرافیایی، طول جغرافیایی، و ارتفاع را از خوانش محلی با تبدیل کردن حالت محلی دستگاه به حالت جغرافیایی تعیین کنید.

موقعیت محتوا در لنگر زمین‌مکانی

لنگرهای زمین‌مکانی به مقدار ارتفاع نیاز دارند که نسبت‌به بیضی‌گون 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.
    }
}

درنهایت، از لنگر برای تعیین موقعیت محتوای سه‌بعدی استفاده کنید:

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)