|
|
@ -4392,7 +4392,11 @@ MainMap_QM.prototype = { |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
//获取目标物角度和距离 deviceObj
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 获取指路机方向 |
|
|
|
|
|
* @param {*} objArr |
|
|
|
|
|
* @returns |
|
|
|
|
|
*/ |
|
|
getObjectAngle:function(objArr){ |
|
|
getObjectAngle:function(objArr){ |
|
|
if(parseInt(Map_QM.util.startObj.node) || parseInt(Map_QM.util.startObj.node) == 0){ |
|
|
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; |
|
|
let pathData =Map_QM.util.allMap[parseInt(Map_QM.util.startObj.build)].buildArr[parseInt(Map_QM.util.startObj.floor)].mapData.path; |
|
|
@ -4404,13 +4408,13 @@ getObjectAngle:function(objArr){ |
|
|
const costAll = dijkstra.single_source_shortest_paths( Map_QM.util.pathStateObj.basePath,startNade,startNade).costs; |
|
|
const costAll = dijkstra.single_source_shortest_paths( Map_QM.util.pathStateObj.basePath,startNade,startNade).costs; |
|
|
for(let i=0;i<objArr.length; i++){ |
|
|
for(let i=0;i<objArr.length; i++){ |
|
|
if(parseInt(objArr[i].type) == 1){ //店铺
|
|
|
if(parseInt(objArr[i].type) == 1){ //店铺
|
|
|
for (let h = 0; h < Map_QM.util.allMap[Map_QM.util.startObj.build].buildArr.length; h++) { |
|
|
|
|
|
let mapData = Map_QM.util.allMap[Map_QM.util.startObj.build].buildArr[h].mapData; |
|
|
|
|
|
|
|
|
if(objArr[i].buildingOrder != "undefined" && objArr[i].floorOrder != "undefined" ){ |
|
|
|
|
|
let mapData = Map_QM.util.allMap[parseInt(objArr[i].buildingOrder)].buildArr[parseInt(objArr[i].floorOrder)].mapData; |
|
|
let angle = 0; |
|
|
let angle = 0; |
|
|
for(let g=0; g<mapData.shopArea.length; g++){ |
|
|
for(let g=0; g<mapData.shopArea.length; g++){ |
|
|
if (objArr[i].typeAbbreviation == mapData.shopArea[g].name) { |
|
|
if (objArr[i].typeAbbreviation == mapData.shopArea[g].name) { |
|
|
let toNade = Map_QM.util.startObj.build +"_" +h +"_" +mapData.shopArea[g].shopNav; |
|
|
|
|
|
if(Map_QM.util.startObj.floor == h){ // 同楼层
|
|
|
|
|
|
|
|
|
let toNade = objArr[i].buildingOrder +"_" + parseInt(objArr[i].floorOrder) +"_" +mapData.shopArea[g].shopNav; |
|
|
|
|
|
if(parseInt(objArr[i].buildingOrder) == Map_QM.util.startObj.build && Map_QM.util.startObj.floor == parseInt(objArr[i].floorOrder)){ // 同楼层
|
|
|
let x0 = (mapData.shopArea[g].xaxis-Map_QM.util.startObj.xaxis); |
|
|
let x0 = (mapData.shopArea[g].xaxis-Map_QM.util.startObj.xaxis); |
|
|
let y0 = -1*(mapData.shopArea[g].yaxis-Map_QM.util.startObj.yaxis); |
|
|
let y0 = -1*(mapData.shopArea[g].yaxis-Map_QM.util.startObj.yaxis); |
|
|
angle = (360+parseInt(Math.atan2(x0,y0)*180/Math.PI))%360; |
|
|
angle = (360+parseInt(Math.atan2(x0,y0)*180/Math.PI))%360; |
|
|
@ -4418,7 +4422,7 @@ getObjectAngle:function(objArr){ |
|
|
}else{ // 不同楼层
|
|
|
}else{ // 不同楼层
|
|
|
let pathNodes = dijkstra.find_path(Map_QM.util.pathStateObj.graphPath, startNade, toNade); |
|
|
let pathNodes = dijkstra.find_path(Map_QM.util.pathStateObj.graphPath, startNade, toNade); |
|
|
for(let u=0; u<pathNodes.nodes.length; u++){ |
|
|
for(let u=0; u<pathNodes.nodes.length; u++){ |
|
|
if(Map_QM.util.startObj.floor != pathNodes.nodes[u].split("_")[1]){ |
|
|
|
|
|
|
|
|
if(Map_QM.util.startObj.floor != pathNodes.nodes[u].split("_")[1] || Map_QM.util.startObj.build != pathNodes.nodes[u].split("_")[0]){ |
|
|
let fac = Map_QM.getFacilIcon(pathNodes.nodes[u].split("_")); |
|
|
let fac = Map_QM.getFacilIcon(pathNodes.nodes[u].split("_")); |
|
|
let x0 = fac.position.x - Map_QM.util.startObj.xaxis; |
|
|
let x0 = fac.position.x - Map_QM.util.startObj.xaxis; |
|
|
let y0 = fac.position.y + Map_QM.util.startObj.yaxis; |
|
|
let y0 = fac.position.y + Map_QM.util.startObj.yaxis; |
|
|
@ -4433,11 +4437,12 @@ getObjectAngle:function(objArr){ |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}else{ // 设施
|
|
|
|
|
|
|
|
|
}else if(parseInt(objArr[i].type) == 2){ // 设施
|
|
|
let item = Map_QM.pathIcon({type: objArr[i].typeAbbreviation}); |
|
|
let item = Map_QM.pathIcon({type: objArr[i].typeAbbreviation}); |
|
|
|
|
|
if(item){ |
|
|
let toNade = item.build + "_" + item.floor + "_" + item.node; |
|
|
let toNade = item.build + "_" + item.floor + "_" + item.node; |
|
|
let angle = 0; |
|
|
let angle = 0; |
|
|
if(item.floor == Map_QM.util.startObj.floor){ |
|
|
|
|
|
|
|
|
if(item.build== Map_QM.util.startObj.build && item.floor == Map_QM.util.startObj.floor){ |
|
|
let x0 = item.site.x-Map_QM.util.startObj.xaxis; |
|
|
let x0 = item.site.x-Map_QM.util.startObj.xaxis; |
|
|
let y0 = item.site.y+Map_QM.util.startObj.yaxis; |
|
|
let y0 = item.site.y+Map_QM.util.startObj.yaxis; |
|
|
angle = (360+parseInt(Math.atan2(x0,y0)*180/Math.PI))%360; |
|
|
angle = (360+parseInt(Math.atan2(x0,y0)*180/Math.PI))%360; |
|
|
@ -4445,9 +4450,38 @@ getObjectAngle:function(objArr){ |
|
|
}else{ |
|
|
}else{ |
|
|
let pathNodes = dijkstra.find_path(Map_QM.util.pathStateObj.graphPath, startNade, toNade); |
|
|
let pathNodes = dijkstra.find_path(Map_QM.util.pathStateObj.graphPath, startNade, toNade); |
|
|
for(let u=0; u<pathNodes.nodes.length; u++){ |
|
|
for(let u=0; u<pathNodes.nodes.length; u++){ |
|
|
if(Map_QM.util.startObj.floor != pathNodes.nodes[u].split("_")[1]){ |
|
|
|
|
|
|
|
|
if(Map_QM.util.startObj.floor != pathNodes.nodes[u].split("_")[1] || Map_QM.util.startObj.build != pathNodes.nodes[u].split("_")[0]){ |
|
|
|
|
|
let fac = Map_QM.getFacilIcon(pathNodes.nodes[u].split("_")); |
|
|
|
|
|
let x0 = fac.position.x - Map_QM.util.startObj.xaxis; |
|
|
|
|
|
let y0 = fac.position.y + Map_QM.util.startObj.yaxis; |
|
|
|
|
|
angle = (360+parseInt(Math.atan2(x0,y0)*180/Math.PI))%360; |
|
|
|
|
|
angle = Math.abs(angle - parseInt(Map_QM.util.deviceObj.angle)); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
objArr[i].angle = angle; |
|
|
|
|
|
objArr[i].cost = parseInt(costAll[toNade] / Map_QM.util.options.mapScale); |
|
|
|
|
|
} |
|
|
|
|
|
}else{ //点位
|
|
|
|
|
|
// h g
|
|
|
|
|
|
console.log(objArr[i]) |
|
|
|
|
|
if(objArr[i].buildingOrder != "undefined" && objArr[i].floorOrder != "undefined" ){ |
|
|
|
|
|
let mapData = Map_QM.util.allMap[Map_QM.util.startObj.build].buildArr[Map_QM.util.startObj.floor].mapData; |
|
|
|
|
|
if(mapData.path){ |
|
|
|
|
|
mapData.path.nodes.sort(Map_QM.util.sortNode); |
|
|
|
|
|
let angle = 0; |
|
|
|
|
|
let toNade = objArr[i].buildingOrder +"_" + objArr[i].floorOrder +"_" + objArr[i].location; |
|
|
|
|
|
if(objArr[i].buildingOrder == Map_QM.util.startObj.build && Map_QM.util.startObj.floor == objArr[i].floorOrder){ // 同楼层
|
|
|
|
|
|
let x0 = (mapData.path.nodes[parseInt(objArr[i].location)].x - Map_QM.util.startObj.xaxis); |
|
|
|
|
|
let y0 = -1*(mapData.path.nodes[parseInt(objArr[i].location)].y - Map_QM.util.startObj.yaxis); |
|
|
|
|
|
angle = (360+parseInt(Math.atan2(x0,y0)*180/Math.PI))%360; |
|
|
|
|
|
angle = Math.abs(angle - parseInt(Map_QM.util.deviceObj.angle)); |
|
|
|
|
|
}else{ // 不同楼层
|
|
|
|
|
|
let pathNodes = dijkstra.find_path(Map_QM.util.pathStateObj.graphPath, startNade, toNade); |
|
|
|
|
|
for(let u=0; u<pathNodes.nodes.length; u++){ |
|
|
|
|
|
if(Map_QM.util.startObj.floor != pathNodes.nodes[u].split("_")[1] || Map_QM.util.startObj.build != pathNodes.nodes[u].split("_")[0]){ |
|
|
let fac = Map_QM.getFacilIcon(pathNodes.nodes[u].split("_")); |
|
|
let fac = Map_QM.getFacilIcon(pathNodes.nodes[u].split("_")); |
|
|
|
|
|
|
|
|
let x0 = fac.position.x - Map_QM.util.startObj.xaxis; |
|
|
let x0 = fac.position.x - Map_QM.util.startObj.xaxis; |
|
|
let y0 = fac.position.y + Map_QM.util.startObj.yaxis; |
|
|
let y0 = fac.position.y + Map_QM.util.startObj.yaxis; |
|
|
angle = (360+parseInt(Math.atan2(x0,y0)*180/Math.PI))%360; |
|
|
angle = (360+parseInt(Math.atan2(x0,y0)*180/Math.PI))%360; |
|
|
@ -4461,9 +4495,10 @@ getObjectAngle:function(objArr){ |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
return objArr; |
|
|
return objArr; |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* @api {方法} pathIcon({type:"xsj"}) 获取最近设施 |
|
|
* @api {方法} pathIcon({type:"xsj"}) 获取最近设施 |
|
|
* @apiGroup 地图导航 |
|
|
* @apiGroup 地图导航 |
|
|
|