From 3befd2836844fdc74407ea535ecbab0b3c600d33 Mon Sep 17 00:00:00 2001 From: gaozl Date: Tue, 24 Sep 2024 16:20:00 +0800 Subject: [PATCH] fix: ci --- public/static/qm/MainMap_QM_go.js | 339 +++++++++++++++++++----------- 1 file changed, 216 insertions(+), 123 deletions(-) diff --git a/public/static/qm/MainMap_QM_go.js b/public/static/qm/MainMap_QM_go.js index ffeeb99..ebb3d92 100644 --- a/public/static/qm/MainMap_QM_go.js +++ b/public/static/qm/MainMap_QM_go.js @@ -179,10 +179,10 @@ var QMUtil = function () { }; this.lightOptions = { d_col: "#ffffff", - d_int: 0.2, + d_int: 0.1, s_col: "#fffffa", g_col: "#ffffff", - a_int: 0.85, + a_int: 0.5, }; this.m_zoom = 1.2; //2D地图缩放大小 this._clock = new THREE.Clock(); @@ -1340,14 +1340,7 @@ var MainMap_QM = function (callBack, options) { this.selectShop; this.selectEle = null; //当前使用的电梯 this.overShop; //终点店铺 - this.shape = new THREE.Shape(); - this.shape.moveTo(-10, -10); - this.shape.lineTo(10, -10); - this.shape.lineTo(10, 10); - this.shape.lineTo(-10, 10); - this.dtLineGroup = new THREE.Group(); - this.dtLineGroup.name = "dtLine"; - + this.cost = -1; if (document.getElementById("moveFloorBG")) { document.getElementById("moveFloorBG").style.zIndex = 500; this.moveFloorbg = new THREE.CSS2DObject( @@ -1419,8 +1412,8 @@ MainMap_QM.prototype = { getPointByNode: function (str) { let nodes = str.split("_"); if (nodes.length > 2 && !isNaN(parseInt(nodes[2])) && parseInt(nodes[2])>=0) { - Map_QM.util.allMap[nodes[0]].buildArr[nodes[1]].mapData.path.nodes.sort(Map_QM.util.sortNode); - return Map_QM.util.allMap[nodes[0]].buildArr[nodes[1]].mapData.path.nodes[nodes[2]]; + Map_QM.util.allMap[parseInt(nodes[0])].buildArr[parseInt(nodes[1])].mapData.path.nodes.sort(Map_QM.util.sortNode); + return Map_QM.util.allMap[parseInt(nodes[0])].buildArr[parseInt(nodes[1])].mapData.path.nodes[nodes[2]]; }else{ return {x:-5000,y:-5000,msg:"未打点"}; } @@ -1574,7 +1567,7 @@ MainMap_QM.prototype = { this.util.m_zoom = this.util.allMap[this.util.selectBuild].m_zoom; } } - let { playSpeed, collision, modelIcon, shopStyle, shadow, otherPath, navColor, iconUrl, iconName, inArea, pathColor, pathStyle} = options; + let { playSpeed, collision, modelIcon, shopStyle, otherPath, navColor, iconUrl, iconName, inArea, pathColor, pathStyle} = options; this.util.options.playSpeed = playSpeed != undefined ? playSpeed : this.util.options.playSpeed; this.util.options.collision = collision != undefined ? collision : this.util.options.collision; @@ -1731,7 +1724,7 @@ MainMap_QM.prototype = { for (let k = 0; k < collada2.animations.length; k++) { let mixer = new THREE.AnimationMixer(collada2.scene); mixer.clipAction(collada2.animations[k]).play(); - Map_QM.mixers.push(mixer); + _this.mixers.push(mixer); } _this.endModel = collada2.scene; _this.scene.add(collada2.scene); @@ -1807,7 +1800,6 @@ MainMap_QM.prototype = { this.CSSObject.add(this.outObject); this.CSSObject.add(this.perObject); this.buildObj.add(this.CSSObject); - this.buildObj.add(this.dtLineGroup); this.initGuide(); if (!this.util.options.deviceAng) { this.cameraPerspective.position.set(this.util.sceneGap.cameraX, this.util.sceneGap.cameraY, this.util.sceneGap.cameraZ ); @@ -1853,35 +1845,35 @@ MainMap_QM.prototype = { try { for (let j = 0; j < this.util.pathStateObj.facAllArr.length; j++) { for (let k = 0; k < this.util.pathStateObj.facAllArr[j].length; k++) { - let facP =this.util.pathStateObj.facAllArr[j][k].buildOrder +"_" + this.util.pathStateObj.facAllArr[j][k].floorOrder +"_" +this.util.pathStateObj.facAllArr[j][k].navCode; - for (let h = 0; h < this.util.pathStateObj.facAllArr[j].length; h++) { - if (h != k && this.util.pathStateObj.facAllArr[j][k].buildOrder ==this.util.pathStateObj.facAllArr[j][h].buildOrder) { - let nP =this.util.pathStateObj.facAllArr[j][h].buildOrder +"_" +this.util.pathStateObj.facAllArr[j][h].floorOrder +"_" + this.util.pathStateObj.facAllArr[j][h].navCode; - if (this.util.pathStateObj.facAllArr[j][h].facCode == "dt") { - ftPathObj[facP][nP] =200000 +2000 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder)-parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); - if (this.util.pathStateObj.seldtFacNo.type == "dt" &&this.util.pathStateObj.facAllArr[j][k].no == this.util.pathStateObj.seldtFacNo.no) { - graphPathObj[facP][nP] =2000 +300 *Math.abs(parseInt( this.util.pathStateObj.facAllArr[j][h].floorOrder) - parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); - } else { - graphPathObj[facP][nP] =5000 +600 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); - } - dtPathObj[facP][nP] = 5000 +800 *Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder)-parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); - basePathObj[facP][nP] = 600 +200 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) - parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder )); - } else if ( - this.util.pathStateObj.facAllArr[j][h].facCode == "td" - ) { - graphPathObj[facP][nP] =4000 +800 * Math.abs( parseInt( this.util.pathStateObj.facAllArr[j][h].floorOrder) - parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); - ftPathObj[facP][nP] = 4000 +800 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder )); - dtPathObj[facP][nP] = 4000 + 800 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) - parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); - basePathObj[facP][nP] = 800 *Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt( this.util.pathStateObj.facAllArr[j][k].floorOrder )); - } else { - dtPathObj[facP][nP] =200000 +2000 * Math.abs(parseInt( this.util.pathStateObj.facAllArr[j][h].floorOrder) - parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder) ); - if (this.util.pathStateObj.seldtFacNo.type == "ft" &&this.util.pathStateObj.seldtFacNo.no.search(this.util.pathStateObj.facAllArr[j][k].no + ",") != -1) { - graphPathObj[facP][nP] = 2000 + 300 *Math.abs( parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); + if(!this.util.pathStateObj.facAllArr[j][k].hasOwnProperty("toState") || this.util.pathStateObj.facAllArr[j][k].toState){ //增加扶梯停靠状态 + let facP =this.util.pathStateObj.facAllArr[j][k].buildOrder +"_" + this.util.pathStateObj.facAllArr[j][k].floorOrder +"_" +this.util.pathStateObj.facAllArr[j][k].navCode; + for (let h = 0; h < this.util.pathStateObj.facAllArr[j].length; h++) { + if (h != k && this.util.pathStateObj.facAllArr[j][k].buildOrder ==this.util.pathStateObj.facAllArr[j][h].buildOrder) { + let nP =this.util.pathStateObj.facAllArr[j][h].buildOrder +"_" +this.util.pathStateObj.facAllArr[j][h].floorOrder +"_" + this.util.pathStateObj.facAllArr[j][h].navCode; + if (this.util.pathStateObj.facAllArr[j][h].facCode == "dt") { + ftPathObj[facP][nP] =200000 +2000 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder)-parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); + if (this.util.pathStateObj.seldtFacNo.type == "dt" &&this.util.pathStateObj.facAllArr[j][k].no == this.util.pathStateObj.seldtFacNo.no) { + graphPathObj[facP][nP] =2000 +300 *Math.abs(parseInt( this.util.pathStateObj.facAllArr[j][h].floorOrder) - parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); + } else { + graphPathObj[facP][nP] =5000 +600 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); + } + dtPathObj[facP][nP] = 5000 +800 *Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder)-parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); + basePathObj[facP][nP] = 600 +200 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) - parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder )); + } else if (this.util.pathStateObj.facAllArr[j][h].facCode == "td") { + graphPathObj[facP][nP] =4000 +800 * Math.abs( parseInt( this.util.pathStateObj.facAllArr[j][h].floorOrder) - parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); + ftPathObj[facP][nP] = 4000 +800 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder )); + dtPathObj[facP][nP] = 4000 + 800 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) - parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); + basePathObj[facP][nP] = 800 *Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt( this.util.pathStateObj.facAllArr[j][k].floorOrder )); } else { - graphPathObj[facP][nP] = 5000 +600 * Math.abs( parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder) ); + dtPathObj[facP][nP] =200000 +2000 * Math.abs(parseInt( this.util.pathStateObj.facAllArr[j][h].floorOrder) - parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder) ); + if (this.util.pathStateObj.seldtFacNo.type == "ft" &&this.util.pathStateObj.seldtFacNo.no.search(this.util.pathStateObj.facAllArr[j][k].no + ",") != -1) { + graphPathObj[facP][nP] = 2000 + 300 *Math.abs( parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); + } else { + graphPathObj[facP][nP] = 5000 +600 * Math.abs( parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder) ); + } + ftPathObj[facP][nP] = 5000 + 800 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); + basePathObj[facP][nP] = 100 + 400 *Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder)-parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); } - ftPathObj[facP][nP] = 5000 + 800 * Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder) -parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); - basePathObj[facP][nP] = 100 + 400 *Math.abs(parseInt(this.util.pathStateObj.facAllArr[j][h].floorOrder)-parseInt(this.util.pathStateObj.facAllArr[j][k].floorOrder)); } } } @@ -1898,38 +1890,39 @@ MainMap_QM.prototype = { this.util.pathStateObj.basePath = basePathObj; var fIndex = 0, bIndex = 0; this.mapArr[bIndex] = []; + var _this = this; intTimer = setInterval(() => { - if (!Map_QM.util.allMap[bIndex].buildArr[fIndex]) { + if (!_this.util.allMap[bIndex].buildArr[fIndex]) { clearInterval(intTimer); - this.initFloor(); + _this.initFloor(); return; } - let floor = new FloorMap_QM(bIndex, fIndex, Map_QM.util.allMap[bIndex].buildArr[fIndex].name ); - floor.floorName = Map_QM.util.allMap[bIndex].buildArr[fIndex].name; + let floor = new FloorMap_QM(bIndex, fIndex, this.util.allMap[bIndex].buildArr[fIndex].name ); + floor.floorName = this.util.allMap[bIndex].buildArr[fIndex].name; floor.initDraw(); - floor.allObj.position.set(bIndex * Map_QM.util.options.bSpace, 0, 0); - if (fIndex != parseInt(Map_QM.util.deviceObj.floor)) { + floor.allObj.position.set(bIndex * this.util.options.bSpace, 0, 0); + if (fIndex != parseInt(this.util.deviceObj.floor)) { floor.allObj.visible = false; } this.buildObj.add(floor.allObj); this.mapArr[bIndex].push(floor); fIndex++; - if (fIndex >= Map_QM.util.allMap[bIndex].buildArr.length) { - if (bIndex == Map_QM.util.allMap.length - 1) { + if (fIndex >= this.util.allMap[bIndex].buildArr.length) { + if (bIndex == this.util.allMap.length - 1) { clearInterval(intTimer); - let pathData = Map_QM.util.allMap[parseInt(Map_QM.util.deviceObj.build)].buildArr[parseInt(Map_QM.util.deviceObj.floor)].mapData.path; - if (Map_QM.util.deviceObj.xaxis) { - Map_QM.mapArr[parseInt(Map_QM.util.deviceObj.build)][parseInt(Map_QM.util.deviceObj.floor)].setStartSite(Map_QM.util.deviceObj.xaxis,Map_QM.util.deviceObj.yaxis, parseInt(Map_QM.util.shopHeight) + 20); + let pathData = this.util.allMap[parseInt(this.util.deviceObj.build)].buildArr[parseInt(this.util.deviceObj.floor)].mapData.path; + if (this.util.deviceObj.xaxis) { + this.mapArr[parseInt(this.util.deviceObj.build)][parseInt(this.util.deviceObj.floor)].setStartSite(this.util.deviceObj.xaxis,this.util.deviceObj.yaxis, parseInt(this.util.shopHeight) + 20); } else { - if (parseInt(Map_QM.util.deviceObj.node) != -1) { - pathData && pathData.nodes.sort(Map_QM.util.sortNode); - if (pathData &&!Map_QM.util.deviceObj.xaxis && pathData.nodes.length > parseInt(Map_QM.util.deviceObj.node) && parseInt(Map_QM.util.deviceObj.node) >= 0) { - Map_QM.util.deviceObj.xaxis = pathData.nodes[parseInt(Map_QM.util.deviceObj.node)].x; - Map_QM.util.deviceObj.yaxis = pathData.nodes[parseInt(Map_QM.util.deviceObj.node)].y; + if (parseInt(this.util.deviceObj.node) != -1) { + pathData && pathData.nodes.sort(this.util.sortNode); + if (pathData &&!this.util.deviceObj.xaxis && pathData.nodes.length > parseInt(this.util.deviceObj.node) && parseInt(this.util.deviceObj.node) >= 0) { + this.util.deviceObj.xaxis = pathData.nodes[parseInt(this.util.deviceObj.node)].x; + this.util.deviceObj.yaxis = pathData.nodes[parseInt(this.util.deviceObj.node)].y; } else { console.warn("初始化点位失败"); } - Map_QM.mapArr[parseInt(Map_QM.util.deviceObj.build)][parseInt(Map_QM.util.deviceObj.floor)].setStartSite(Map_QM.util.deviceObj.xaxis,Map_QM.util.deviceObj.yaxis,parseInt(Map_QM.util.shopHeight) + 20); + this.mapArr[parseInt(this.util.deviceObj.build)][parseInt(this.util.deviceObj.floor)].setStartSite(this.util.deviceObj.xaxis,this.util.deviceObj.yaxis,parseInt(this.util.shopHeight) + 20); } } this.initFloor(); @@ -1996,7 +1989,7 @@ MainMap_QM.prototype = { for (let i = 0; i < Map_QM.mapArr[t].length; i++) { Map_QM.mapArr[t][i].labelObj.traverse((obj) => { if (obj.element) { - obj.element.innerText = lang == "en"? obj.element.dataset.nameEn : obj.element.dataset.name; + obj.element.innerText = lang == "en"? (obj.element.dataset.nameEn || obj.element.dataset.name) : obj.element.dataset.name; } }); Map_QM.mapArr[t][i].showTagObj.traverse((obj) => { @@ -2048,11 +2041,7 @@ MainMap_QM.prototype = { } } }); - object.scene.children[0].scale.set( - sopce.util.modelStr[sopce.index].size.x, - sopce.util.modelStr[sopce.index].size.y, - sopce.util.modelStr[sopce.index].size.z - ); + object.scene.children[0].scale.set(sopce.util.modelStr[sopce.index].size.x, sopce.util.modelStr[sopce.index].size.y, sopce.util.modelStr[sopce.index].size.z); sopce.util.fbxModels.push({key: sopce.util.modelStr[sopce.index].key,obj: object, operation: sopce.util.modelStr[sopce.index],}); if (sopce.index < sopce.util.modelStr.length - 1) { sopce.index++; @@ -2255,14 +2244,9 @@ MainMap_QM.prototype = { noHas = true; for (let k = 0; k < this.util.pathStateObj.facAllArr.length; k++) { //Map_QM.util.pathStateObj.facAllArr 记录遍历结果 - if (this.util.pathStateObj.facAllArr[k][0].no != "" && - this.util.pathStateObj.facAllArr[k][0].navCode != "" && - parseInt(this.util.pathStateObj.facAllArr[k][0].navCode) > 0 && - this.util.pathStateObj.facAllArr[k][0].no == mapDataA.stairs[j].no - ) { - if (this.util.pathStateObj.facAllArr[k][0].facCode == mapDataA.stairs[j].facCode || - (this.util.pathStateObj.facAllArr[k][0].facCode.search("ft") != -1 && mapDataA.stairs[j].facCode.search("ft") != -1) - ) { + if (this.util.pathStateObj.facAllArr[k][0].no != "" && this.util.pathStateObj.facAllArr[k][0].navCode != "" && + parseInt(this.util.pathStateObj.facAllArr[k][0].navCode) > 0 && this.util.pathStateObj.facAllArr[k][0].no == mapDataA.stairs[j].no ) { + if (this.util.pathStateObj.facAllArr[k][0].facCode == mapDataA.stairs[j].facCode || (this.util.pathStateObj.facAllArr[k][0].facCode.search("ft") != -1 && mapDataA.stairs[j].facCode.search("ft") != -1)) { noHas = false; mapDataA.stairs[j].floorOrder = floorOrder; mapDataA.stairs[j].buildOrder = buildOrder; @@ -2316,6 +2300,9 @@ MainMap_QM.prototype = { changeIconState: function (state, fIndex = -1) { iconState = state; fIndex = fIndex === -1 ? Map_QM.util.selectFloor : fIndex; + if(!Map_QM.mapArr || !Map_QM.mapArr[Map_QM.util.selectBuild]){ + return; + } try{ for (let i = 0; i < Map_QM.mapArr[Map_QM.util.selectBuild].length; i++) { if (i == fIndex && Map_QM.buildObj.visible) { @@ -2326,7 +2313,7 @@ MainMap_QM.prototype = { obj.element && (obj.element.style.display = "none"); } else { obj.visible = true; - obj.element && (obj.element.style.display = ""); + obj.element && (obj.element.style.display = "block"); } } }); @@ -2372,8 +2359,8 @@ MainMap_QM.prototype = { }, changeBuildInner: function (build = -1, fIndex = -1) { - fIndex = fIndex == -1 ? parseInt(Map_QM.util.deviceObj.floor) : fIndex; - build = build == -1 ? parseInt(Map_QM.util.deviceObj.build) : build; + fIndex = fIndex == -1 ? 0 : fIndex; + build = build == -1 ? parseInt(Map_QM.util.selectBuild) : build; Map_QM.util.selectBuild = build; Map_QM.buildObj.position.x = -1 * build * Map_QM.util.options.bSpace; Map_QM.changeFloorInner(build, fIndex); //结束后切换楼层 @@ -2562,7 +2549,7 @@ MainMap_QM.prototype = { }, changeFloorInner: function (build = -1,fIndex = -1,callBack = undefined) { fIndex = fIndex != -1 ? fIndex : Map_QM.util.deviceObj.floor; - build = build != -1 ? build : Map_QM.util.deviceObj.build; + build = build != -1 ? build : Map_QM.util.selectBuild; for (let t = 0; t < Map_QM.mapArr.length; t++) { for (let i = 0; i < Map_QM.mapArr[t].length; i++) { Map_QM.mapArr[t][i].allObj.visible = t == build ? true : false; @@ -2580,7 +2567,7 @@ MainMap_QM.prototype = { if (i == fIndex) { Map_QM.mapArr[build][i].allObj.visible = true; Map_QM.mapArr[build][i].CSSObj.traverse((obj) => { - obj.element && obj.userData.isShow && obj.userData.type == "icon" && (obj.element.style.display = ""); + obj.element && obj.userData.isShow && obj.userData.type == "icon" && (obj.element.style.display = "block"); }); Map_QM.changeIconState(iconState, fIndex); } else { @@ -2614,11 +2601,10 @@ MainMap_QM.prototype = { * */ onShowMeDir: function () { - if (Map_QM.util.pathStateObj.isPathState) { - Map_QM.changePathDir("2D"); - }else{ - this.onInnerMeDir(); + if (this.util.selectBuild != this.util.deviceObj.build || this.util.selectFloor != this.util.deviceObj.floor) { + this.changeFloorInner(this.util.deviceObj.build, this.util.deviceObj.floor); } + this.onInnerMeDir(); }, onInnerMeDir: function () { if (this.util.selectBuild != this.util.deviceObj.build || this.util.selectFloor != this.util.deviceObj.floor) { @@ -2869,8 +2855,8 @@ MainMap_QM.prototype = { if (obj.userData && obj.userData.type == "2d_IP") { if (obj.element) { if (isShow) { - obj.element.style.visibility = - obj.userData.show == language ? "visible" : "hidden"; + obj.element.style.visibility = obj.userData.show == language ? "visible" : "hidden"; + obj.element.style.display = obj.userData.show == language ? "block" : "none"; } else { obj.element.style.visibility = "hidden"; } @@ -2924,13 +2910,16 @@ MainMap_QM.prototype = { * */ mapToPoint: function (mapX, mapY, mapZ) { - let tag0 = Map_QM.controls.target; - let pos0 = Map_QM.controls.object.position; + let tag0 = Map_QM.controls.target.clone(); + let pos0 = Map_QM.controls.object.position.clone(); let vct = new THREE.Vector3(mapX, -1 * mapY, mapZ); vct.applyMatrix4(Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].allObj.matrix); + vct.applyMatrix4(Map_QM.buildObj.matrix); vct.applyMatrix4(Map_QM.sceneGap.matrix); Map_QM.controls.target = new THREE.Vector3(vct.x, vct.y, vct.z); Map_QM.controls.object.position.set(pos0.x + (vct.x - tag0.x), pos0.y + (vct.y - tag0.y), pos0.z + (vct.z - tag0.z)); + Map_QM.controls.object.lookAt(vct); + Map_QM.controls.update(); return vct; }, /** @@ -3004,7 +2993,7 @@ MainMap_QM.prototype = { reSetGuide: function () { if (pathCameraState == "2D") { //2D导航 - Map_QM.onInnerMeDir(); + Map_QM.onShowMeDir(); Map_QM.guide.visible = false; let pos = Map_QM.guide.position; Map_QM.guide = Map_QM.man_2d; @@ -3463,7 +3452,7 @@ MainMap_QM.prototype = { let labObj = Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj.children; for (let i = 0; i < shopNums.length; i++) { for (let j = 0; j < labObj.length; j++) { - if (labObj[j].name == shopNums[i]) { + if (labObj[j].name == shopNums[i] && labObj[j].element) { labObj[j].element.innerHTML = elements[i]; break; } @@ -3733,9 +3722,10 @@ MainMap_QM.prototype = { Map_QM.controls.update(); Map_QM.renderer.render(Map_QM.scene, Map_QM.camera); Map_QM.labelRenderer.render(Map_QM.scene, Map_QM.camera); - - Map_QM.labelRenderer.renderObject(Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].CSSObj, Map_QM.scene, Map_QM.camera); - Map_QM.labelRenderer.zOrder(Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj); + if(Map_QM.mapArr && Map_QM.mapArr[Map_QM.util.selectBuild] && Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor]){ + Map_QM.labelRenderer.renderObject(Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].CSSObj, Map_QM.scene,Map_QM.camera); + Map_QM.labelRenderer.zOrder(Map_QM.mapArr[Map_QM.util.selectBuild][Map_QM.util.selectFloor].labelObj); + } }, /** * 初始化后调用 @@ -3880,7 +3870,12 @@ MainMap_QM.prototype = { } }, getlocaleToScreen:function(object,vect){ - let standardVec = object.localToWorld(vect).project(Map_QM.camera); + let standardVec; + if(vect){ + standardVec = object.localToWorld(vect).project(Map_QM.camera); + }else{ + standardVec = object.localToWorld(new THREE.Vector3()).project(Map_QM.camera); + } const screenX = Math.round(Map_QM.w/2 * standardVec.x + Map_QM.w/2); const screenY = Math.round(Map_QM.h/-2 * standardVec.y + Map_QM.h/2); return {x:screenX, y:screenY}; @@ -3896,14 +3891,14 @@ MainMap_QM.prototype = { continue; } if (!Map_QM.util.options.collision) { - childs[i].element.style.display = ""; + childs[i].element.style.display = "block"; continue; } let obj = childs[i].element; - obj.style.display = ""; + obj.style.display = "block"; let labP = obj.getBoundingClientRect(); for (let j = 0; j < i; j++) { - if (childs[j].element.style.display == "") { + if (childs[j].element.style.display == "block") { let pb = childs[j].element.getBoundingClientRect(); let isCol = Map_QM.util.isCollision(labP, pb); if (isCol) { @@ -4396,6 +4391,79 @@ MainMap_QM.prototype = { return "leftFront"; } }, + +//获取目标物角度和距离 deviceObj +getObjectAngle:function(objArr){ + if(parseInt(Map_QM.util.startObj.node) || parseInt(Map_QM.util.startObj.node) == 0){ + let pathData =Map_QM.util.allMap[parseInt(Map_QM.util.startObj.build)].buildArr[parseInt(Map_QM.util.startObj.floor)].mapData.path; + pathData.nodes.sort(Map_QM.util.sortNode); + Map_QM.util.startObj.xaxis = pathData.nodes[parseInt(Map_QM.util.startObj.node)].x; + Map_QM.util.startObj.yaxis = pathData.nodes[parseInt(Map_QM.util.startObj.node)].y; + + let startNade = Map_QM.util.startObj.build +"_" +Map_QM.util.startObj.floor +"_" +Map_QM.util.startObj.node; + const costAll = dijkstra.single_source_shortest_paths( Map_QM.util.pathStateObj.basePath,startNade,startNade).costs; + for(let i=0;i0) { for (let i = 0;i < this.mapArr[parseInt(this.util.startObj.build)].length;i++) { for (let len =this.mapArr[parseInt(this.util.startObj.build)][i].allObj.children.length - 1;len >= 0;len--) { let obj =this.mapArr[parseInt(this.util.startObj.build)][i].allObj.children[len]; @@ -4562,6 +4630,8 @@ MainMap_QM.prototype = { } } } + }else{ + return; } this.util.startObj = {}; if (toObj && toObj.node) { @@ -4690,6 +4760,7 @@ MainMap_QM.prototype = { */ pathNode: function (toObj, callBackFun) { Map_QM.util.isMorePath = false; + Map_QM.cost=-1; if (!toObj) { return { direction: "", wayList: [] }; } @@ -4699,11 +4770,7 @@ MainMap_QM.prototype = { Map_QM.selectShop = null; Map_QM.util.pathStateObj.isPathState = true; Map_QM.elementDestroy("all"); - if ( - Map_QM.util.initModelArr && - Map_QM.util.initModelArr.length > 0 && - Map_QM.util.changeDist.inner > Map_QM.util.options.minDis - ) { + if (Map_QM.util.initModelArr && Map_QM.util.initModelArr.length > 0 && Map_QM.util.changeDist.inner > Map_QM.util.options.minDis) { Map_QM.controls.maxDistance = Map_QM.util.changeDist.inner; } if (!Map_QM.util.startObj.xaxis && !Map_QM.util.startObj.yaxis) { @@ -4722,9 +4789,7 @@ MainMap_QM.prototype = { this.onFindPathModel(); if (callBackFun) { Map_QM.parseForShopArr(); - const data = JSON.parse( - JSON.stringify(Map_QM.util.pathStateObj.forShopArr) - ); + const data = JSON.parse(JSON.stringify(Map_QM.util.pathStateObj.forShopArr)); callBackFun(data); } Map_QM.startRender(); @@ -4761,10 +4826,7 @@ MainMap_QM.prototype = { for (let i = 0; i < Map_QM.mapArr[h].length; i++) { let shopArr = Map_QM.mapArr[h][i].shopObj.children; for (let k = 0; k < shopArr.length; k++) { - if ( - shopArr[k].name == houseNumber && - parseInt(shopArr[k].node) >= 0 - ) { + if (shopArr[k].name == houseNumber && parseInt(shopArr[k].node) >= 0) { return { build: h, floor: i, @@ -5006,7 +5068,23 @@ MainMap_QM.prototype = { }, parseForShopArr: function () { - Map_QM.util.pathStateObj.forShopArr = { direction: "", wayList: [] }; + Map_QM.util.pathStateObj.forShopArr = { direction: "", angle:0, cost:0, wayList: [] }; + if(Map_QM.cost>0){ + Map_QM.cost -= (3500 +800*Math.abs(Map_QM.util.overObj.floor-Map_QM.util.deviceObj.floor)); + Map_QM.util.pathStateObj.forShopArr.cost = parseInt(Map_QM.cost / Map_QM.util.options.mapScale); + }else{ + let obj = Map_QM.getGapByPathNode({build: Map_QM.util.overObj.build, floor: Map_QM.util.overObj.floor, node: Map_QM.util.overObj.node}); + Map_QM.util.pathStateObj.forShopArr.angle = obj.angle; + Map_QM.util.pathStateObj.forShopArr.cost = obj.dis; + } + if(Map_QM.forShopArr[0].Facilities){ + Map_QM.forShopArr[0].Facilities.position.x; + let x0 = Map_QM.forShopArr[0].Facilities.position.x - Map_QM.util.startObj.xaxis; + let y0 = Map_QM.forShopArr[0].Facilities.position.y + Map_QM.util.startObj.yaxis; + angle = (360+parseInt(Math.atan2(x0,y0)*180/Math.PI))%360; + Map_QM.util.pathStateObj.forShopArr.angle = Math.abs(angle - parseInt(Map_QM.util.deviceObj.angle)); + } + Map_QM.forShopArr.forEach((item, index) => { if (item.hasOwnProperty("Direction")) { Map_QM.util.pathStateObj.forShopArr.direction = item.Direction; @@ -5050,7 +5128,7 @@ MainMap_QM.prototype = { * * @apiParamExample 请求示例 * - * Map_QM.getGapByPathNode({floor:2,node:"53"}); + * Map_QM.getGapByPathNode({build:0, floor:2, node:"53"}); * * @apiSuccessExample {Object} dist 距离米数 time 步行时间 * { @@ -5060,10 +5138,24 @@ MainMap_QM.prototype = { getGapByPathNode: function (toObj) { let startNade = Map_QM.util.deviceObj.build +"_" + Map_QM.util.deviceObj.floor + "_" + Map_QM.util.deviceObj.node; let toNade = toObj.build + "_" + toObj.floor + "_" + toObj.node; - let path = { cost: -1 }, + let pathData0 =Map_QM.util.allMap[parseInt(Map_QM.util.deviceObj.build)].buildArr[parseInt(Map_QM.util.deviceObj.floor)].mapData.path; + pathData0.nodes.sort(Map_QM.util.sortNode); + let stX = pathData0.nodes[parseInt(Map_QM.util.deviceObj.node)].x; + let stY = pathData0.nodes[parseInt(Map_QM.util.deviceObj.node)].y; + + let pathData =Map_QM.util.allMap[parseInt(toObj.build)].buildArr[parseInt(toObj.floor)].mapData.path; + pathData.nodes.sort(Map_QM.util.sortNode); + let toX = pathData.nodes[parseInt(toObj.node)].x; + let toY = pathData.nodes[parseInt(toObj.node)].y; + + let path = { cost: -1 }, angle=0, minTime = 1; try { path = dijkstra.find_path( Map_QM.util.pathStateObj.basePath,startNade,toNade); + let x0 = (toX - stX); + let y0 = -1*(toY - stY); + angle = (360+parseInt(Math.atan2(x0,y0)*180/Math.PI))%360; + angle = Math.abs(angle - parseInt(Map_QM.util.deviceObj.angle)); minTime = parseInt(path.cost / Map_QM.util.options.mapScale / 50) < 0.5? 0.5 : parseInt(path.cost / Map_QM.util.options.mapScale / 50); console.log(`距离目的地 ${parseInt(path.cost / Map_QM.util.options.mapScale)} 米,预计${minTime} 分钟`); // 21 是比例尺 } catch (e) { @@ -5071,6 +5163,7 @@ MainMap_QM.prototype = { console.log(e); } return { + angle: angle, dis: parseInt(path.cost / Map_QM.util.options.mapScale), time: minTime, }; @@ -5171,7 +5264,7 @@ MainMap_QM.prototype = { } Map_QM.mapArr[h][i].labelObj.traverse((obj) => { if (obj.element && obj.userData.formatCode == formatCode) { - obj.element.style.display = isShow ? "" : "none"; + obj.element.style.display = isShow ? "block" : "none"; obj.userData.isShow = isShow; } }); @@ -5206,7 +5299,7 @@ MainMap_QM.prototype = { } Map_QM.mapArr[h][i].labelObj.traverse((obj) => { if (obj.name == houseNumber) { - obj.element.style.display = isShow ? "" : "none"; + obj.element.style.display = isShow ? "block" : "none"; obj.userData.isShow = isShow; } }); @@ -5269,6 +5362,7 @@ MainMap_QM.prototype = { * 模拟导航获取路线 */ onFindPathModel: function (usePath = null) { + Map_QM.cost = -1; Map_QM.forShopArr.length = 0; Map_QM.util._indexPathFloor = 0; Map_QM.util.pathStateObj.isPathPlay = true; @@ -5291,10 +5385,10 @@ MainMap_QM.prototype = { Map_QM.util.overObj.node = Map_QM.getMinCostByArray( Map_QM.util.overObj.floor,inArray, costall); } } - let startNade = - Map_QM.util.startObj.build + "_" + Map_QM.util.startObj.floor + "_" + Map_QM.util.startObj.node; + let startNade = Map_QM.util.startObj.build + "_" + Map_QM.util.startObj.floor + "_" + Map_QM.util.startObj.node; let toNade = Map_QM.util.overObj.build + "_" + Map_QM.util.overObj.floor + "_" + Map_QM.util.overObj.node; let path = dijkstra.find_path(usePath, startNade, toNade); + Map_QM.cost = path.cost; Map_QM.forShopPath(path.nodes); } catch (e) { window.captureException && window.captureException(e); @@ -5776,8 +5870,9 @@ MainMap_QM.prototype = { /** * 楼层状态清理 */ - clearFloor: function (fIndex = -1, reSet = true) { + clearFloor: function (fIndex = -1) { isJUZ = false; + clearTimeout(shopTime); if (fIndex == -1) { fIndex = Map_QM.util.deviceObj.floor; } @@ -5793,8 +5888,6 @@ MainMap_QM.prototype = { if (Map_QM.moveFloorbg) { Map_QM.moveFloorbg.element.style.display = "none"; } - if (reSet) { - //叠层不处理 if (Map_QM.mapArr[Map_QM.util.selectBuild] && Map_QM.mapArr[Map_QM.util.selectBuild].length > 0) { for (let i = 0; i < Map_QM.mapArr[Map_QM.util.selectBuild].length; i++) { let child = Map_QM.mapArr[Map_QM.util.selectBuild][i].allObj; @@ -5806,8 +5899,7 @@ MainMap_QM.prototype = { Map_QM.mapArr[Map_QM.util.selectBuild][i].findPath.clearPath(); } } - Map_QM.remove_child(Map_QM.dtLineGroup); - } + TweenMax.killAll(true); }, @@ -5882,6 +5974,7 @@ MainMap_QM.prototype = { if (!Map_QM.util.overObj.node) { return; } + if (Map_QM.util.pathStateObj.isPathState) { Map_QM.util.timeObj.pathTime = setTimeout(() => { clearTimeout(Map_QM.util.timeObj.pathTime); Map_QM.controls.reset(); @@ -5891,7 +5984,7 @@ MainMap_QM.prototype = { Map_QM.onFindPathToObj(); } }, 100); - + } }, /** @@ -6311,7 +6404,7 @@ FloorMap_QM.prototype = { initFloor: function () { let floor; let mapData = Map_QM.util.allMap[this.buildOrder].buildArr[this.floorOrder].mapData; - let entColor, borderColor; + let entColor, borderColor,floorH=1,buildH=1; if (mapData.floorArea) { floor = Map_QM.util.changeAreaToString(mapData.floorArea); } @@ -7431,7 +7524,7 @@ var Facilities_QM = function () { shopDiv.src = url; shopDiv.style.zIndex = 100; shopDiv.style.width = "1.2vw"; - shopDiv.style.display = isShow ? "" : "none"; + shopDiv.style.display = isShow ? "block" : "none"; shopDiv.dataset.name = name; shopDiv.dataset.src = url; shopDiv.dataset.nameEn = nameEn;