Я создаю приложение Ioni c 4 с angular и хочу создать компас, который будет указывать в направлении c. Это направление будет показано стрелкой над компасом. До сих пор я создал компас и компас работает нормально и поместил стрелку над ним. Снимок экрана приложения. ![enter image description here](https://i.stack.imgur.com/TdFE4.png)
Что я знаю, так это то, что мне нужно вычислить угол от текущей позиции до целевой позиции. Я использовал некоторые решения для переполнения стека, чтобы найти угол и использовать этот угол, чтобы указать стрелку в нужное место. Но, к сожалению, я не могу получить желаемый угол.
Это код для определения угла.
angleFromCoordinate() {
let lat1 = this.latCoords
let lon1 = this.lngCoords
let lat2 = this.destLat;
let lon2 = this.destLong;
var p1 = {
x: lat1,
y: lon1
};
var p2 = {
x: lat2,
y: lon2
};
var angleDeg = Math.atan2(p2.y - p1.y, p2.x - p1.x) * 180 / Math.PI;
console.log(angleDeg);
return angleDeg;
}
Я также хочу, чтобы стрелка двигалась вперед, если устройство поворачивается. Я вращаю свой компас с помощью плагина ioni c 4'sOrientation
this.deviceSubscription = this.deviceOrientation.watchHeading().subscribe(
(data: DeviceOrientationCompassHeading) => {
//to torate compass
this.rotateCompass(data.magneticHeading);
//to rotate the arrow
this.rotateArrow(data.magneticHeading);
}
);