Почему компас iOS не указывает в том же направлении, что и курс, рассчитанный с помощью библиотеки магнитометров реагиру ⇐ IOS
Почему компас iOS не указывает в том же направлении, что и курс, рассчитанный с помощью библиотеки магнитометров реагиру
Я создаю простое приложение-компас, используя React-native и Expo. Я тестирую его на своем iPhone с помощью Expo Go. Я использую данные из библиотеки Magnetometer для расчета курса и отображения его со стрелкой. Стрелка не указывает на север, хотя встроенное в iPhone приложение «Компас» отлично указывает на север. Моя стрелка также значительно меняет направление, когда я наклоняю телефон, чтобы она не находилась в одной плоскости с землей.
Я получаю калиброванные данные магнитометра, используя import { Magnetometer } from 'expo-sensors'; и Magnetometer.addListener(myCallBackFunc). Предоставленные необработанные данные датчика представляют собой значения x, y и z. Я использую простое уравнение для расчета заголовка по значениям x и y: Math.atan2(data.y, data.x) * (180 / Math.PI);
Что делает встроенное приложение-компас, а я нет?
const Compass = () => { const [magnetometerSub, setMagnetometerSub] = useState (null); const [northAngle, setNorthAngle] = useState (null); useEffect(() => { подписаться на магнитометр(); return () => отписаться от магнитометра (); }, []); const subscribeToMagnetometer = () => { setMagnetometerSub( Magnetometer.addListener((данные) => { setNorthAngle (calculateNorthAngle (данные)); }) ); }; const unsubscribeFromMagnetometer = () => { MagneticometerSub && MagneticometerSub.remove(); setMagnetometerSub (ноль); setNorthAngle (ноль); }; // Вычисляет северный угол по показаниям магнитометра // Возвращает значения в градусах в диапазоне (-180, 180] const CalculNorthAngle = (данные) => { if (!(data && data.x && data.y)) { вернуть ноль; } return Math.atan2(data.y, data.x) * (180 / Math.PI); }; возвращаться ( {северный угол? ( // Стрелка указывает вправо, когда угол равен 0 ) : ( нет данных об угле )} ); }; устройство: iPhone 14 Pro Max, iOS: 16.6.1, НПМ: 9.8.1, узел: 18.18.0, выставка: 49.0.3
PS: Я тестирую это в аэропорту. Может ли это быть источником магнитных помех? Если да, то почему встроенное приложение компаса по-прежнему работает нормально в аэропорту?
Я создаю простое приложение-компас, используя React-native и Expo. Я тестирую его на своем iPhone с помощью Expo Go. Я использую данные из библиотеки Magnetometer для расчета курса и отображения его со стрелкой. Стрелка не указывает на север, хотя встроенное в iPhone приложение «Компас» отлично указывает на север. Моя стрелка также значительно меняет направление, когда я наклоняю телефон, чтобы она не находилась в одной плоскости с землей.
Я получаю калиброванные данные магнитометра, используя import { Magnetometer } from 'expo-sensors'; и Magnetometer.addListener(myCallBackFunc). Предоставленные необработанные данные датчика представляют собой значения x, y и z. Я использую простое уравнение для расчета заголовка по значениям x и y: Math.atan2(data.y, data.x) * (180 / Math.PI);
Что делает встроенное приложение-компас, а я нет?
const Compass = () => { const [magnetometerSub, setMagnetometerSub] = useState (null); const [northAngle, setNorthAngle] = useState (null); useEffect(() => { подписаться на магнитометр(); return () => отписаться от магнитометра (); }, []); const subscribeToMagnetometer = () => { setMagnetometerSub( Magnetometer.addListener((данные) => { setNorthAngle (calculateNorthAngle (данные)); }) ); }; const unsubscribeFromMagnetometer = () => { MagneticometerSub && MagneticometerSub.remove(); setMagnetometerSub (ноль); setNorthAngle (ноль); }; // Вычисляет северный угол по показаниям магнитометра // Возвращает значения в градусах в диапазоне (-180, 180] const CalculNorthAngle = (данные) => { if (!(data && data.x && data.y)) { вернуть ноль; } return Math.atan2(data.y, data.x) * (180 / Math.PI); }; возвращаться ( {северный угол? ( // Стрелка указывает вправо, когда угол равен 0 ) : ( нет данных об угле )} ); }; устройство: iPhone 14 Pro Max, iOS: 16.6.1, НПМ: 9.8.1, узел: 18.18.0, выставка: 49.0.3
PS: Я тестирую это в аэропорту. Может ли это быть источником магнитных помех? Если да, то почему встроенное приложение компаса по-прежнему работает нормально в аэропорту?
Re: Почему компас iOS не указывает в том же направлении, что и курс, рассчитанный с помощью библиотеки магнитометров реа
Приветствую, у меня такая же проблема, не понимаю какие алгоритмы применяются для фильтрации данных магнитометра. И в интернете ничего не могу найти, в исходных кодах ещё не копался - очень лень. Вы смогли разобраться?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение