地理空间锚点是一种锚点,可让您使用 Geospatial API 放置具有地理坐标的 3D 内容。
地理空间锚点使用纬度和经度来确定其位置。纬度和经度由 WGS84 规范定义,与典型 GPS 系统中显示的坐标相同。
确定某个位置的纬度和经度
如果您有特定的地图注点,请使用 Google 地图确定其经纬度:
- 在桌面设备上访问 Google 地图。
依次前往图层 > 更多。


将地图类型更改为卫星,然后清除屏幕左下角的地球视图复选框。

这会强制采用 2D 透视,并消除可能因 3D 角度视图而产生的错误。
在地图上,右键点击相应位置,然后选择经纬度,将其复制到剪贴板。
将用户所在区域中的位置转换为地理空间锚点
如果您可以前往地图注点,则可以通过将设备本地姿态转换为地理空间姿态,根据本地读数确定纬度、经度和海拔。
在地理空间锚点处放置内容
地理空间锚点需要一个海拔高度值,该值相对于 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)