Я все еще довольно новичок в Javascript
и довольно незнаком с Android в целом.Мне было интересно, если кто-то хочет посмотреть на мой код и сказать мне, что я делаю неправильно.
Я использовал веб-комплект, чтобы сделать этот компас, который прекрасно работает на iPhone, но он не работаетдля Android.Он преобразует альфа-значение ориентации устройства в переменную, называемую заголовком, и первоначально выглядело так:
// Get event data
function deviceOrientationListener(event) {
var alpha = event.alpha; //z axis rotation [0,360)
var beta = event.beta; //x axis rotation [-180, 180]
var gamma = event.gamma; //y axis rotation [-90, 90]
//Check if absolute values have been sent
if (typeof event.webkitCompassHeading !== "undefined") {
alpha = event.webkitCompassHeading; //iOS non-standard
var heading = alpha
document.getElementById("heading").innerHTML = heading.toFixed([0]);
}
else {
alert("This compass won't work on your device! :(");
var heading = 360 - alpha; //heading [0, 360)
document.getElementById("heading").innerHTML = heading.toFixed([0]);
}
Оттуда я добавил оператор else if, чтобы попытаться заставить его работать на Android.Оповещение о том, что компас не работает, действительно исчезает, поэтому я думаю, что условие для else если выполняется, но, похоже, существует проблема с преобразованием градусов вращения альфа в переменную, потому что ничего не отображается.
Новый код выглядит следующим образом:
// Get event data
function deviceOrientationListener(event) {
var alpha = event.alpha; //z axis rotation [0,360)
var beta = event.beta; //x axis rotation [-180, 180]
var gamma = event.gamma; //y axis rotation [-90, 90]
//Check if absolute values have been sent
if (typeof event.webkitCompassHeading !== "undefined") {
alpha = event.webkitCompassHeading; //iOS non-standard
var heading = alpha
document.getElementById("heading").innerHTML = heading.toFixed([0]);
}
else if (window.DeviceOrientationEvent) {
window.addEventListener('deviceorientation', deviceOrientationHandler, false);
alpha = DeviceOrientationEvent.alpha;
var heading = alpha
document.getElementById("heading").innerText = heading.toFixed([0]);
}
else {
alert("This compass won't work on your device! :(");
var heading = 360 - alpha; //heading [0, 360)
document.getElementById("heading").innerHTML = heading.toFixed([0]);
}
Я довольно новичок в Javascript, поэтому, пожалуйста, будьте любезны!Просто хочу знать, что я делаю не так. Заранее спасибо.
РЕДАКТИРОВАТЬ: Вот ссылка на то, что у меня сейчас