GeospatialPose อธิบายตำแหน่งในอวกาศที่สัมพันธ์กับโลก ซึ่งประกอบด้วยคอมโพเนนต์ต่อไปนี้
- ละติจูดและลองจิจูด ซึ่งระบุเป็นองศาตามที่กำหนดโดยข้อกำหนด WGS84
- ระดับความสูง ซึ่งระบุเป็นเมตรเหนือทรงรี WGS84 หรือเทียบเท่ากับเมตรเหนือระดับน้ำทะเลโดยประมาณ
- การวางแนว ซึ่งประมาณทิศทางที่ท่าทางหันไปในระบบพิกัด EUS ระบบพิกัด EUS มี X+ ชี้ไปทางทิศตะวันออก, Y+ ชี้ขึ้น และ Z+ ชี้ไปทางทิศใต้
Geospatial API ให้สิทธิ์เข้าถึงท่าทางภูมิสารสนเทศของอุปกรณ์และให้การแปลงระหว่างท่าทางภูมิสารสนเทศกับท่าทางในอุปกรณ์
สิ่งที่ต้องมีก่อน
หากต้องการรับและแปลงท่าทางภูมิสารสนเทศ แอปของคุณต้องตั้งค่าให้ใช้ Geospatial API คุณจะรับท่าทางภูมิสารสนเทศได้ก็ต่อเมื่อ Geospatial API มีสถานะ RUNNING เท่านั้น
แปลงท่าทางของอุปกรณ์ในเครื่องเป็นท่าทางเชิงภูมิสารสนเทศ
Poseในอุปกรณ์สามารถแปลงเป็น GeospatialPose ได้ เช่น เพื่อระบุตำแหน่งของอุปกรณ์ของผู้ใช้ที่สัมพันธ์กับโลก ซึ่งจะช่วยให้คุณทำสิ่งต่อไปนี้ได้
- สร้างเนื้อหา AR แบบถาวร ซึ่งวัตถุเสมือนที่ผู้ใช้วางไว้จะยึดอยู่กับตำแหน่งทั่วโลกอย่างถูกต้องเพื่อให้เรียกดูได้ในภายหลัง
- ทริกเกอร์ประสบการณ์ตามตำแหน่งโดยอัปเดตตำแหน่งของผู้ใช้บนแผนที่อย่างต่อเนื่องเพื่อเปิดใช้การนำทางแบบเรียลไทม์หรือเกมเพลย์ที่กำหนดเขตพื้นที่เสมือน
- ระบุบริบทในโลกแห่งความเป็นจริงที่แน่นอนของผู้ใช้เพื่อทริกเกอร์ตรรกะแอปพลิเคชันที่เกี่ยวข้องกับตำแหน่ง
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแปลง 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 ในอุปกรณ์ได้ด้วย การเปลี่ยนรูปแบบนี้จะนำข้อมูลที่กำหนดโดยพิกัดในโลกจริง เช่น ตำแหน่งของจุดสังเกต เส้นทางการนำทาง หรือเนื้อหา AR แบบถาวร แล้วแปลงเป็นพื้นที่ภาพที่แม่นยำของอุปกรณ์ของผู้ใช้
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้ 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 } }