GeospatialPose, uzayda Dünya'ya göre bir konumu tanımlar. Aşağıdaki bileşenlerden oluşur:
- WGS84 spesifikasyonu tarafından tanımlandığı şekilde derece cinsinden belirtilen enlem ve boylam.
- WGS84 elipsoidinin üzerinde metre cinsinden belirtilen veya kabaca deniz seviyesinin üzerindeki metreye eşdeğer olan yükseklik.
- Yön: EUS koordinat sisteminde pozun baktığı yönü yaklaşık olarak gösterir. EUS koordinat sisteminde X+ doğuyu, Y+ yukarıyı ve Z+ güneyi gösterir.
Geospatial API, cihazın coğrafi konum pozuna erişim sağlar ve coğrafi konum pozları ile cihazın yerel pozları arasında dönüşüm sağlar.
Ön koşullar
Coğrafi pozları elde etmek ve dönüştürmek için uygulamanızın Geospatial API'yi kullanacak şekilde ayarlanması gerekir. Coğrafi konum pozları yalnızca Geospatial API'nin RUNNING durumu olduğunda elde edilebilir.
Cihazda yerel bir pozu coğrafi poza dönüştürme
Cihaz yerel Pose, örneğin kullanıcının cihazının Dünya'ya göre konumunu belirlemek için GeospatialPose değerine dönüştürülebilir. Bu sayede aşağıdaki işlemleri yapabilirsiniz:
- Kullanıcının yerleştirdiği sanal nesnenin daha sonra alınmak üzere global bir konuma doğru şekilde sabitlendiği kalıcı AR içerikleri oluşturun.
- Kullanıcının haritadaki konumunu sürekli güncelleyerek konuma dayalı deneyimleri tetikleyin. Bu sayede gerçek zamanlı navigasyon veya coğrafi sınır belirleme özellikli oyun deneyimi sunabilirsiniz.
- Konumla alakalı uygulama mantığını tetiklemek için kullanıcının gerçek dünyadaki tam bağlamını belirleme
Aşağıdaki kod örneğinde, Geospatial.createGeospatialPoseFromPose() kullanarak Pose nesnesini GeospatialPose nesnesine dönüştürme işlemi gösterilmektedir.
val devicePose = ArDevice.getInstance(session).state.value.devicePose // Convert the device Pose into a GeospatialPose. when (val result = geospatial.createGeospatialPoseFromPose(devicePose)) { is CreateGeospatialPoseFromPoseSuccess -> { val geoPose = result.pose val lat = geoPose.latitude val lon = geoPose.longitude val alt = geoPose.altitude // Orientation is in the EUS (East-Up-South) coordinate system. val orientation = geoPose.eastUpSouthQuaternion } is CreateGeospatialPoseFromPoseNotTracking -> { // Geospatial is not currently tracking. } else -> { // A newer exception was added, but your app is using an old version of the library } }
Coğrafi pozu cihaza özel poza dönüştürme
GeospatialPose anahtarını cihaza özel Pose anahtarına da dönüştürebilirsiniz. Bu dönüşüm, gerçek dünya koordinatlarıyla tanımlanan bilgileri (ör. bir önemli noktanın konumu, navigasyon yolu veya kalıcı AR içeriği) alır ve kullanıcının cihazının hassas görsel alanına dönüştürür.
Aşağıdaki kod örneğinde, coğrafi bir pozu cihaza özel bir poza dönüştürmek için Geospatial.createPoseFromGeospatialPose() işlevinin nasıl kullanılacağı gösterilmektedir.
// Convert a GeospatialPose (lat/long/alt) back to a device-space Pose. when (val result = geospatial.createPoseFromGeospatialPose(geoPose)) { is CreatePoseFromGeospatialPoseSuccess -> { val devicePose: Pose = result.pose // devicePose is now ready to be used relative to the tracking origin. } is CreatePoseFromGeospatialPoseNotTracking -> { // Geospatial is not currently tracking. } is CreatePoseFromGeospatialPoseInternalError -> { // An internal error occurred. } else -> { // A newer exception was added, but your app is using an old version of the library } }