Ancorare i contenuti a località del mondo reale

Dispositivi XR applicabili
Queste indicazioni ti aiutano a creare esperienze per questi tipi di dispositivi XR.
Occhiali XR con cavo

Le ancora geospaziali sono un tipo di ancora che ti consente di posizionare contenuti 3D con coordinate geografiche utilizzando l'API Geospatial.

Le ancora geospaziali utilizzano la latitudine e la longitudine per determinare la loro posizione. La latitudine e la longitudine sono definite dalla specifica WGS84, che corrisponde alle stesse coordinate mostrate in un tipico sistema GPS.

Determinare la latitudine e la longitudine di una località

Se hai in mente un punto d'interesse specifico, utilizza Google Maps per determinarne la latitudine e la longitudine:

  1. Vai a Google Maps su un computer.
  2. Vai a Livelli > Altro.

    Il pulsante Livelli su Google Maps

    Il pulsante Altro su Google Maps

  3. Cambia il Tipo di mappa in Satellite e deseleziona la casella di controllo Visualizzazione del globo nell'angolo in basso a sinistra dello schermo.

    Le opzioni del tipo di mappa su Google Maps

    In questo modo viene forzata una prospettiva 2D ed eliminati i possibili errori che possono derivare da una visualizzazione 3D angolata.

  4. Sulla mappa, fai clic con il tasto destro del mouse sulla località e seleziona la longitudine e la latitudine per copiarle negli appunti.

Converti una posizione nell'area dell'utente in un ancoraggio geospaziale

Se puoi raggiungere il punto di interesse, puoi determinare la latitudine, la longitudine e l'altitudine da una lettura locale convertendo una posa locale del dispositivo in una posa Geospatial.

Posiziona i contenuti in corrispondenza di un'ancora geospaziale

Le ancora geospaziali richiedono un valore di altitudine, relativo all'ellissoide WGS84 o al terreno o al tetto.

  • Per i valori di altitudine relativi all'ellissoide WGS84, utilizza Geospatial.createAnchor:

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

  • Per i valori di altitudine relativi al terreno o a un tetto, utilizza Geospatial.createAnchorOnSurface, utilizzando rispettivamente GeospatialSurface.TERRAIN e GeospatialSurface.ROOFTOP per specificare come deve essere interpretata l'altitudine finale:

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

    Quando utilizzi GeospatialSurface.ROOFTOP, l'altitudine predefinita è quella del terreno se non viene posizionata su un edificio.

Quindi, controlla il risultato della chiamata di creazione:

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

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

Infine, utilizza l'ancoraggio per posizionare i contenuti 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)