Я пытаюсь реализовать компас, используя событие deviceorientation
. Я хочу использовать вращение, чтобы повернуть стрелку в направлении просмотра. Я просто поворачиваю изображение, когда меняется deviceorientation
.
Вкл. iOS Это работает как шарм, выполняя следующие действия:
if (typeof DeviceOrientationEvent.requestPermission === "function") {
//@ts-ignore
DeviceOrientationEvent.requestPermission()
.then(permissionState => {
if (permissionState === "granted") {
this.compassActive = true;
window.addEventListener(
"deviceorientation",
eventData =>
this.zone.run(() => {
if(!this.compassActive){
return false;
}
//@ts-ignore
this.rotatePlayerIcon(eventData.webkitCompassHeading);
}),
false
);
}
})
.catch(console.error);
Так как DeviceOrientationEvent.webkitCompassHeading
дает мне всемирное представление вращения устройства по часовой стрелке.
Я пробую то же самое на Android, но не могу найти решение, основанное на мире. webkitCompassHeading
не существует на android, поэтому я попытался использовать только eventData.alpha
. Но это дает 0 на основе вращения, которое было при запуске события, а не на севере мира.
Все руководства, которые я нахожу, кажутся устаревшими.
Как получить компас по часовой стрелке android как у меня на iOS?