Zakotwiczanie treści w rzeczywistych lokalizacjach

Odpowiednie urządzenia z XR
Te wskazówki pomogą Ci tworzyć treści na te typy urządzeń z XR.
Przewodowe okulary XR

Kotwice geoprzestrzenne to rodzaj kotwic, które umożliwiają umieszczanie treści 3D ze współrzędnymi geograficznymi za pomocą interfejsu Geospatial API.

Kotwice geoprzestrzenne wykorzystują szerokość i długość geograficzną do określania swojego położenia. Szerokość i długość geograficzna są określane zgodnie ze specyfikacją WGS84, która odpowiada współrzędnym wyświetlanym w typowym systemie GPS.

Określanie szerokości i długości geograficznej lokalizacji

Jeśli masz na myśli konkretne miejsce, użyj Map Google, aby określić jego szerokość i długość geograficzną:

  1. Otwórz Mapy Google na komputerze.
  2. Kliknij Warstwy > Więcej.

    Przycisk warstw w Mapach Google

    Przycisk Więcej w Mapach Google

  3. Zmień Typ mapy na Satelita i odznacz pole wyboru Widok kuli ziemskiej w lewym dolnym rogu ekranu.

    Opcje typu mapy w Mapach Google

    Wymusza to perspektywę 2D i eliminuje możliwe błędy, które mogą wynikać z widoku 3D pod kątem.

  4. Kliknij lokalizację na mapie prawym przyciskiem myszy i wybierz długość i szerokość geograficzną, aby skopiować ją do schowka.

Konwertowanie pozycji w obszarze użytkownika na kotwicę geoprzestrzenną

Jeśli możesz udać się do danego miejsca, możesz określić szerokość i długość geograficzną oraz wysokość na podstawie lokalnego odczytu, konwertując lokalną pozycję urządzenia na pozycję geoprzestrzenną.

Umieszczanie treści w kotwicy geoprzestrzennej

Kotwice geoprzestrzenne wymagają wartości wysokości, która jest określana względem elipsoidy WGS84 lub względem terenu albo dachu.

  • W przypadku wartości wysokości względem elipsoidy WGS84 użyj Geospatial.createAnchor:

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

  • W przypadku wartości wysokości względem terenu lub dachu użyj Geospatial.createAnchorOnSurface, podając odpowiednio GeospatialSurface.TERRAIN i GeospatialSurface.ROOFTOP, aby określić, jak należy interpretować ostateczną wysokość:

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

    Jeśli używasz GeospatialSurface.ROOFTOP, wysokość jest domyślnie ustawiana na wysokość terenu, gdy nie jest umieszczona na budynku.

Następnie sprawdź wynik wywołania tworzenia:

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

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

Na koniec użyj kotwicy, aby umieścić treści 3D:

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)