51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
Page({
|
|
data: {
|
|
direction : "--", // 方向 【西北】【西南】
|
|
angle : "--", // 【269.72】
|
|
rotate : "", // 罗盘旋转的角度
|
|
},
|
|
onLoad(){
|
|
wx.onCompassChange((res) => {
|
|
// res ---> {accuracy: "unreliable", direction: 202.69806}
|
|
// 根据 direction 就能够获取到精度和角度
|
|
let newAngle = res.direction.toFixed(2); // 202.70
|
|
let radios = res.direction.toFixed(0); // 203
|
|
this.setData({
|
|
angle : newAngle,
|
|
direction : this.check(radios),
|
|
rotate: 360 - radios
|
|
})
|
|
});
|
|
// 判断是否有罗盘
|
|
setTimeout(()=>{
|
|
if(this.data.direction === "--" && this.data.angle === "--"){
|
|
wx.showToast({
|
|
title: '没有电子罗盘',
|
|
icon : "loading",
|
|
duration : 3000,
|
|
mask : true
|
|
})
|
|
}
|
|
},3000);
|
|
},
|
|
// 根据角度来判断方向
|
|
check(i){
|
|
if (15 <= i && i <= 75) {
|
|
return '东北'
|
|
} else if (75 < i && i < 105) {
|
|
return '正东'
|
|
} else if (105 <= i && i <= 165) {
|
|
return '东南'
|
|
} else if (165 < i && i < 195) {
|
|
return '正南'
|
|
} else if (195 <= i && i <= 255) {
|
|
return '西南'
|
|
} else if (255 < i && i < 285) {
|
|
return '正西'
|
|
} else if (285 <= i && i <= 345) {
|
|
return '西北'
|
|
} else {
|
|
return '正北'
|
|
}
|
|
}
|
|
}) |