アンカーの一種である Geospatial アンカーを使用すると、Geospatial API を使用して地理座標を持つ 3D コンテンツを配置できます。
地理空間アンカーは、緯度と経度を使用して位置を決定します。緯度と経度は WGS84 仕様で定義されています。これは、一般的な GPS システムに表示される座標と同じです。
場所の緯度と経度を特定する
特定のスポットを念頭に置いている場合は、Google マップを使用して緯度と経度を特定します。
- デスクトップ パソコンで Google マップにアクセスします。
[レイヤ] > [その他] に移動します。

![Google マップの [もっと見る] ボタン](https://developers.google.com/ar/develop/geospatial/images/google-maps-more.png?hl=ja)
[地図の種類] を [航空写真] に変更し、画面の左下にある [地球表示] チェックボックスをオフにします。

これにより、2D の視点が強制され、角度のある 3D ビューで発生する可能性のあるエラーが排除されます。
地図上で場所を右クリックし、緯度と経度を選択してクリップボードにコピーします。
ユーザーのエリア内の位置を Geospatial アンカーに変換する
対象のスポットに移動できる場合は、デバイスローカルのポーズを Geospatial のポーズに変換することで、ローカルの読み取り値から緯度、経度、高度を特定できます。
地理空間アンカーにコンテンツを配置する
地理空間アンカーには、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. } }
最後に、アンカーを使用して 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)