From 108c72b6e3f5a3d9a0f487d1394ed0d3e0e34606 Mon Sep 17 00:00:00 2001
From: jiannibang <271381693@qq.com>
Date: Wed, 23 Oct 2024 14:44:27 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=89=AB=E6=8F=8F=E8=BF=87=E7=A8=8B?=
=?UTF-8?q?=E4=B8=AD=E5=BC=95=E5=AF=BC=E9=A1=BE=E5=AE=A2=E5=B9=B3=E4=B8=BE?=
=?UTF-8?q?=E6=89=8B=E6=9C=BA=EF=BC=8C=E6=89=AB=E6=8F=8F=E5=91=A8=E5=9B=B4?=
=?UTF-8?q?=E7=8E=AF=E5=A2=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages/calibrator/calibrator.js | 71 +++++++++++++++++
pages/calibrator/calibrator.json | 4 +
pages/calibrator/calibrator.wxml | 14 ++++
pages/calibrator/calibrator.wxss | 127 +++++++++++++++++++++++++++++++
pages/calibrator/p.png | Bin 0 -> 736 bytes
pages/calibrator/p1.png | Bin 0 -> 1380 bytes
pages/calibrator/success.png | Bin 0 -> 3097 bytes
pages/index/index-helper.js | 2 +-
pages/index/index.js | 9 ++-
pages/index/index.json | 5 +-
pages/index/index.wxml | 3 +-
11 files changed, 228 insertions(+), 7 deletions(-)
create mode 100644 pages/calibrator/calibrator.js
create mode 100644 pages/calibrator/calibrator.json
create mode 100644 pages/calibrator/calibrator.wxml
create mode 100644 pages/calibrator/calibrator.wxss
create mode 100644 pages/calibrator/p.png
create mode 100644 pages/calibrator/p1.png
create mode 100644 pages/calibrator/success.png
diff --git a/pages/calibrator/calibrator.js b/pages/calibrator/calibrator.js
new file mode 100644
index 0000000..ee6483c
--- /dev/null
+++ b/pages/calibrator/calibrator.js
@@ -0,0 +1,71 @@
+// pages/calibrator/calibrator.js
+Component({
+ /**
+ * 组件的属性列表
+ */
+ properties: {},
+
+ /**
+ * 组件的初始数据
+ */
+ data: {
+ pendingStart: 0,
+ success: false,
+ lineStyle: "",
+ },
+
+ /**
+ * 组件的方法列表
+ */
+ methods: {},
+ lifetimes: {
+ attached() {
+ const windowInfo = wx.getWindowInfo();
+ const vh = windowInfo.windowHeight;
+ wx.startDeviceMotionListening({ interval: "ui" });
+ this.deviceCb = ({ beta, gamma }) => {
+ if (this.data.success) return;
+ const isGammaPass =
+ (gamma > -45 && gamma < 45) || gamma < -135 || gamma > 135;
+ let top =
+ (((Math.abs(gamma) > 90 ? 180 - Math.abs(beta) : Math.abs(beta)) /
+ 90) *
+ vh) /
+ 2;
+ if (!isGammaPass) {
+ if (top < vh / 2) top = vh / 2 - 100;
+ else top = vh / 2 + 100;
+ }
+ const success = top > vh / 2 - 50 && top < vh / 2 + 50;
+ if (!success) {
+ this.setData({
+ lineStyle: `top: ${top}px;`,
+ pendingStart: 0,
+ });
+ } else if (!this.data.pendingStart) {
+ this.setData({
+ lineStyle: `top: ${top}px;`,
+ pendingStart: Date.now(),
+ });
+ } else if (Date.now() - this.data.pendingStart > 750) {
+ this.setData({
+ lineStyle: `top: ${top}px;`,
+ success: true,
+ });
+ setTimeout(() => {
+ this.triggerEvent("success");
+ }, 500);
+ } else {
+ this.setData({
+ lineStyle: `top: ${top}px;`,
+ });
+ }
+ };
+ wx.onDeviceMotionChange(this.deviceCb);
+ },
+ detached() {
+ wx.offDeviceMotionChange(this.deviceCb);
+ wx.stopDeviceMotionListening();
+ },
+ },
+});
diff --git a/pages/calibrator/calibrator.json b/pages/calibrator/calibrator.json
new file mode 100644
index 0000000..e8cfaaf
--- /dev/null
+++ b/pages/calibrator/calibrator.json
@@ -0,0 +1,4 @@
+{
+ "component": true,
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/calibrator/calibrator.wxml b/pages/calibrator/calibrator.wxml
new file mode 100644
index 0000000..9bdc21e
--- /dev/null
+++ b/pages/calibrator/calibrator.wxml
@@ -0,0 +1,14 @@
+
+ 请竖举手机
+ 将摄像头对准周围环境,并保持手机对准水平状态
+
+
+
+
+
+ 请校准手机至中间高亮区域
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/calibrator/calibrator.wxss b/pages/calibrator/calibrator.wxss
new file mode 100644
index 0000000..652f49f
--- /dev/null
+++ b/pages/calibrator/calibrator.wxss
@@ -0,0 +1,127 @@
+.calibrator {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 10;
+ background: rgba(0, 0, 0, 0.8);
+}
+.rect {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: absolute;
+ left: 0;
+ top: calc(50vh - 40px);
+ width: 100vw;
+ height: 80px;
+ background: rgba(238, 233, 222, 0.3);
+ backdrop-filter: blur(3px);
+}
+.rect .l1 {
+ position: absolute;
+ bottom: 25px;
+ left: 14px;
+ width: calc(50vw - 30px);
+ border-top: 2px dashed rgba(215, 207, 198, 0.4);
+}
+.rect .l2 {
+ position: absolute;
+ bottom: 25px;
+ right: 14px;
+ width: calc(50vw - 30px);
+ border-top: 2px dashed rgba(215, 207, 198, 0.4);
+}
+.rect .p {
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 16px;
+ margin: auto;
+ width: 24px;
+ height: 40px;
+}
+.title {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: calc(50vh - 40px - 192px - 34px);
+ margin: auto;
+ color: var(--T-G1, #eee9de);
+ text-align: center;
+ /* 标题-Title1/B */
+ font-family: "PingFang SC";
+ font-size: 24px;
+ font-style: normal;
+ font-weight: 500;
+ line-height: normal;
+ z-index: 2;
+}
+.opacity6 {
+ opacity: 0.6;
+}
+.meta {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: calc(50vh - 40px - 137px - 41px);
+ width: 288px;
+ margin: auto;
+ padding: 12px;
+ border-radius: 16px;
+ background: rgba(0, 0, 0, 0.7);
+ backdrop-filter: blur(6px);
+ color: var(--T-9, #fff);
+ text-align: center;
+ font-family: "PingFang SC";
+ font-size: 12px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+ z-index: 2;
+}
+.line {
+ position: absolute;
+ width: 100vh;
+ height: 80px;
+ top: 50vh;
+ left: 0;
+ transform-origin: center;
+ transform: translateY(-40px);
+ z-index: 1;
+}
+.line .l {
+ position: absolute;
+ left: 16px;
+ right: 16px;
+ width: calc(100vw - 32px);
+ background: #ffdb00;
+ height: 4px;
+ border-radius: 100px;
+ bottom: 23px;
+ z-index: 1;
+}
+.line .p {
+ position: absolute;
+ width: 30px;
+ height: 56px;
+ left: calc(50vw - 15px);
+ bottom: 11px;
+ z-index: 2;
+}
+.meta1 {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: calc(50vh + 40px + 18px);
+ color: var(--T-G2, #d1c8b9);
+ text-align: center;
+ /* Font/正文B2M-14 */
+ font-family: "PingFang SC";
+ font-size: 14px;
+ font-style: normal;
+ font-weight: 500;
+ line-height: normal;
+ z-index: 2;
+}
diff --git a/pages/calibrator/p.png b/pages/calibrator/p.png
new file mode 100644
index 0000000000000000000000000000000000000000..a47a4e1e47aaa499a3a75028441a2b2903d18b5e
GIT binary patch
literal 736
zcmeAS@N?(olHy`uVBq!ia0vp^+CUt@!3HE7cJv$qQk(@Ik;M!QVyYm_=ozH)0Vv2=
z9OUlAuua2O
zd{Hu2oYi#?uF?ov8^QnT=xx7$t-txX?u9rdUSLgKsQWpA?@@xusW;oo3@gv8n5Hi8
zWvR<sefA8$pa&SN2vFMBD8j1bQAJXiX
zJXn>cX|iSCI(hE+KiNs5d_ikmZ^u|oaFi0?tf$s(bMNI}LA?~2_WvA5lNLtkh;+9m
zZ4A&6>pJSRF+xL(n{2^FPF{x>22N2g5}vec-Oa7HCWma_zpRhf>Gpw2&PheBd6Cz)
zt$W>>-{@=0du7fi=}RA$&Q>$|<>Rrk>itXi%Le<@Dt#5FTYsKD?bw8%S2r#k4tvcW
zqbO&yXyU4_Nj3js8O>wX3j|2Wvld_5ym+sV*zdpoGr9Qw7dD*NTcp0^a5jJ3tpkxI
zr8h%zrP~5qcsQK*27j}PV^!KR_3qCi(RW?jKYkKEFZ`SJ?X8ZJFP+|PurED2Yufcy
zh5b+Vgy)-_{pqA|+2j;!>;4Y+NuraS&ExJJIw#LDy}gG|P4wCBa`9b9wB}6Px25*&
ivA7TOYh>R4<9;f9cmDA|w!44{lEKr}&t;ucLK6VaGEDyf
literal 0
HcmV?d00001
diff --git a/pages/calibrator/p1.png b/pages/calibrator/p1.png
new file mode 100644
index 0000000000000000000000000000000000000000..be767017ab09d8e4017899a17a771233338eff6b
GIT binary patch
literal 1380
zcmeAS@N?(olHy`uVBq!ia0vp^PC#7F!3HF^Kc4mtNO2Z;L>4nJh^c}wqi2xH2cRHh
zage(c!@6@aFM%AEbVpxD28NCO+-E{-7;jBn?9XT*d`9RL6Q+!BL+6=zoN
zZ7;TDzGCK_*?M8ug_Dao?q(EbikGVI2rz%7*D38d;gyqs>l%SO9T)OmDRm#~<&P=R
z`EkIcq~)5B;@hp2=d`y!-~BVqsJ}S9XtMQ%IluoNGBE!>$LHPOv*qV(=j<%DbNH~K
zEa>FkP9CijtIihA53gkUtGqbQzInlpf`r8#zJJnslh%cQU8i)X^2yc9ORAo1oWF63
zfOx!eU-z}Zt!vjVa&$dlv1&)dU%dsgrzabv%7zD7b=?XG{IIQR7sKY6VP{iURkq*#
z(>=+db(yz<+Rqqi6Q!ovhfP@$N_G3Der3#!v*W+L9eCr;6Iay!$?hJ1&>nr1F6E_zX*a*J6Z?V3t?rL2By^k;Ti{^DKxZqgx
zp$;s-itz=U@fg>+g*OR9G)#d=g^_Iif_cM8YU`#pXjy4Ot4F9
zzuMB~SHULlSgrc}@Bj7;4+&5znihZG;P>am8k5gDK25Vu>@?<{%W9aCYx=1w@Voo{
z8v92F4ASZ?*XZAHndg#X%@rf^PDizgKU==j3?`-^6xt+_kvZRCqBUJ=OQV`Aq?v
zU7ZGIS|uGEZnM~gEd{swu3m9lU(j*Ki4KlKVuHLbEXqm}f(L=pE(Y6nwTUVIaB1Ow
z{7mW9n%pB>pFg{9!XqZgt)f%}R-n`*DA?1H0M+xOOTuevs@41*`>PyWX7tQDcYWW%
ziNb+vJ2~o~6!)?zE$V|Sz41ytNZG?a=gJ3rr6X>dCrb7$-EVo9#q5;P-20+X+mQ|5
zX+0lklL@a{k;#WaTv}FkuUzrZ!W4_kKOLv{EWdiSG~g3M)Va#_A^wD(yxs+Gbh1zAEv%7P
z?tjlsVnWD$6$Zr%;euB#pO3NZ``gf?Bl-Wg@}<-n9#)YT-)J{Hybu+K*4LNe*3;mN`)L75ft*iX$nWYu^
zMt{!6i@PN!8JJa_Uw^J_p5CFq!E>K5toy0=XZ5X%^4yZo&jl@t(Arw(VKie^+C^s3
zN#_!beq^Oj>Fbl*`-)dx+b?a$+pp$VrEkCG{x8C-UNFThdXu%A%I3#nC5mkl9F)TH~536e3cqXqpRypI~
z9INTwyWXsKIsfE@j>`I^=c#@*9{p9%pH_Hw{5~4@PWZmpu4gNrH+410-%?&Mmwnse
WxQc|&-`4>PMFvk-KbLh*2~7Y=BYuAX
literal 0
HcmV?d00001
diff --git a/pages/calibrator/success.png b/pages/calibrator/success.png
new file mode 100644
index 0000000000000000000000000000000000000000..baf95b2f8a80ec164817d083986cb2ad14aa523d
GIT binary patch
literal 3097
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
literal 0
HcmV?d00001
diff --git a/pages/index/index-helper.js b/pages/index/index-helper.js
index a58aba3..442c335 100644
--- a/pages/index/index-helper.js
+++ b/pages/index/index-helper.js
@@ -15,7 +15,7 @@ export const STATES = {
noCamera: "noCamera",
tomap: "tomap",
arriveEnd: "arriveEnd",
- bluetoothRequired: "bluetoothRequired",
+ bluetoothRequired: "bluetoothRequired",calibrating: "calibrating",
};
export const promptIcons = {
info: "info",
diff --git a/pages/index/index.js b/pages/index/index.js
index f55a156..45498aa 100644
--- a/pages/index/index.js
+++ b/pages/index/index.js
@@ -175,6 +175,9 @@ Page({
registerGLTFLoader(THREE);
});
},
+ startCalibrator() {
+ this.setData({ state: STATES.calibrating });
+ },
requestLocation() {
if (!(this.data.inited && this.data.floorOrder !== null)) return;
if (!this.sdkInited) {
@@ -554,7 +557,7 @@ Page({
if (btn === "3") return this.exit();
}
if (state === STATES.fail8s) {
- if (btn === "1") return this.requestLocation();
+ if (btn === "1") return this.startCalibrator();
if (btn === "2") return this.setState(STATES.selectFloor);
if (btn === "3") return this.exit();
}
@@ -576,7 +579,7 @@ Page({
floorId: nextFloor.floorId,
floorName: nextFloor.name,
});
- return this.requestLocation();
+ return this.startCalibrator();
}
if (state === STATES.requestEnd || state === STATES.arriveEnd) {
if (btn === "1") return this.exit();
@@ -642,7 +645,7 @@ Page({
},
handleRelocate() {
this.SDK.finishARNavigation();
- this.requestLocation();
+ this.startCalibrator();
},
handleNavExit() {
this.setState(STATES.requestEnd);
diff --git a/pages/index/index.json b/pages/index/index.json
index 38b5100..ccb65f4 100644
--- a/pages/index/index.json
+++ b/pages/index/index.json
@@ -4,6 +4,7 @@
"map2d": "../map2d/map2d",
"tabs": "../tabs/tabs",
"destination": "../destination/destination",
- "nav": "../nav/nav"
+ "nav": "../nav/nav",
+ "calibrator": "../calibrator/calibrator"
}
-}
\ No newline at end of file
+}
diff --git a/pages/index/index.wxml b/pages/index/index.wxml
index 73db0ab..73ef78e 100644
--- a/pages/index/index.wxml
+++ b/pages/index/index.wxml
@@ -26,7 +26,7 @@
{{item.name}}
-
+
@@ -67,6 +67,7 @@
返回
+