يصف GeospatialPose موضعًا في الفضاء بالنسبة إلى الأرض. وتتألف من المكوّنات التالية:
- خط العرض وخط الطول، ويتم تحديدهما بالدرجات وفقًا لما هو محدّد في مواصفات WGS84
- الارتفاع، ويتم تحديده بالأمتار فوق السطح الإهليلجي لنظام WGS84، أو ما يعادل تقريبًا الأمتار فوق مستوى سطح البحر
- الاتجاه، وهو يمثّل تقريبًا الاتجاه الذي تواجهه الوضعية في نظام الإحداثيات EUS. يشير نظام الإحداثيات EUS إلى الشرق في X+، وإلى الأعلى في Y+، وإلى الجنوب في Z+.
تتيح واجهة Geospatial API الوصول إلى الوضعية الجغرافية المكانية للجهاز وتوفّر عمليات تحويل بين الوضعيات الجغرافية المكانية والوضعيات المحلية للجهاز.
المتطلبات الأساسية
للحصول على وضعيات Geospatial وتحويلها، يجب إعداد تطبيقك لاستخدام Geospatial API. لا يمكن الحصول على الوضعيات الجغرافية المكانية إلا
عندما تكون واجهة برمجة التطبيقات Geospatial API في حالة RUNNING.
تحويل وضعية محلية على الجهاز إلى وضعية جغرافية مكانية
يمكن تحويل Pose محلي على الجهاز إلى GeospatialPose، على سبيل المثال، لتحديد موضع جهاز المستخدم بالنسبة إلى الأرض. ويمكن أن يساعدك ذلك في ما يلي:
- يمكنك إنشاء محتوى واقع معزّز دائم، حيث يتم تثبيت عنصر افتراضي يضعه المستخدم بدقة في موقع جغرافي عالمي لاسترداده لاحقًا.
- يمكنك تفعيل التجارب المستندة إلى الموقع الجغرافي من خلال تحديث موقع المستخدم باستمرار على الخريطة لتفعيل التنقّل في الوقت الفعلي أو أسلوب اللعب المستند إلى وضع حدود جغرافية.
- تحديد السياق الدقيق للمستخدم في العالم الحقيقي لتفعيل منطق التطبيق ذي الصلة بالموقع الجغرافي
يوضّح نموذج الرمز البرمجي التالي كيفية تحويل Pose إلى GeospatialPose باستخدام Geospatial.createGeospatialPoseFromPose().
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 } }
تحويل وضعية جغرافية مكانية إلى وضعية محلية على الجهاز
يمكنك أيضًا تحويل GeospatialPose إلى Pose على الجهاز. تأخذ عملية التحويل هذه المعلومات المحدّدة من خلال الإحداثيات في العالم الواقعي، مثل الموقع الجغرافي لمعلم أو مسار تنقّل أو محتوى واقع معزّز دائم، وتحوّلها إلى المساحة المرئية الدقيقة لجهاز المستخدم.
توضّح عينة التعليمات البرمجية التالية كيفية استخدام
Geospatial.createPoseFromGeospatialPose()
لتحويل وضعية جغرافية مكانية إلى وضعية محلية للجهاز.
// 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 } }