<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
|
<html lang="en">
|
|
<head>
|
<meta charset="utf-8">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<title>切换地图</title>
|
|
<link rel="icon" type="image/x-icon" href="/hxzkoa/hxzk/assets/img/favicon.ico" />
|
<link href="/hxzkoa/hxzk/assets/css/loader.css" rel="stylesheet" type="text/css" />
|
<script src="/hxzkoa/hxzk/assets/js/loader.js"></script>
|
<link href="/hxzkoa/hxzk/assets/css/structure.css" rel="stylesheet" type="text/css" />
|
<!-- BEGIN GLOBAL MANDATORY STYLES -->
|
<link href="https://fonts.googleapis.com/css?family=Quicksand:400,500,600,700&display=swap"
|
rel="stylesheet">
|
<link href="/hxzkoa/hxzk/assets/css/components/custom-sweetalert.css" rel="stylesheet"
|
type="text/css" />
|
<link href="/hxzkoa/hxzk/plugins/sweetalerts/sweetalert2.min.css" rel="stylesheet"
|
type="text/css" />
|
<link href="/hxzkoa/hxzk/plugins/sweetalerts/sweetalert.css" rel="stylesheet" type="text/css" />
|
<link href="/hxzkoa/hxzk/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
|
<link href="/hxzkoa/hxzk/assets/css/main.css" rel="stylesheet" type="text/css" />
|
<link href="/hxzkoa/hxzk/plugins/perfect-scrollbar/perfect-scrollbar.css" rel="stylesheet"
|
type="text/css" />
|
<link href="/hxzkoa/hxzk/assets/css/structure.css" rel="stylesheet" type="text/css" />
|
<link href="/hxzkoa/hxzk/plugins/highlight/styles/monokai-sublime.css" rel="stylesheet"
|
type="text/css" />
|
<!-- END GLOBAL MANDATORY STYLES -->
|
|
<!-- BEGIN PAGE LEVEL PLUGINS/CUSTOM STYLES -->
|
<link href="/hxzkoa/hxzk/assets/css/elements/search.css" rel="stylesheet" type="text/css" />
|
<link href="/hxzkoa/hxzk/plugins/apex/apexcharts.css" rel="stylesheet" type="text/css">
|
<link href="/hxzkoa/hxzk/assets/css/dashboard/dash_2.css" rel="stylesheet" type="text/css" />
|
<link href="/hxzkoa/hxzk/assets/css/elements/custom-pagination.css" rel="stylesheet"
|
type="text/css" />
|
<link href="/hxzkoa/hxzk/assets/css/components/custom-modal.css" rel="stylesheet" type="text/css" />
|
<!-- END PAGE LEVEL PLUGINS/CUSTOM STYLES -->
|
<link rel="preconnect" href="https://fonts.gstatic.com">
|
<link rel="stylesheet" type="text/css" hrpe="/hxzkoa/hxzk/assets/css/vxgplayer-1.8.40.min.css">
|
<link href="https://fonts.googleapis.com/css2?family=Ma+Shan+Zheng&display=swap" rel="stylesheet">
|
<link rel="stylesheet" type="text/css" href="/hxzkoa/hxzk/plugins/table/datatable/datatables.css">
|
<link rel="stylesheet" type="text/css"
|
href="/hxzkoa/hxzk/plugins/table/datatable/custom_dt_html5.css">
|
<link rel="stylesheet" type="text/css"
|
href="/hxzkoa/hxzk/plugins/table/datatable/dt-global_style.css">
|
<style>
|
body {
|
margin: 0px;
|
width: 100%;
|
background: url("/hxzkoa/resources/images/bottomBackground2.jpg") ;
|
}
|
|
#head {
|
background-color: #FFFF00;
|
width: 100%;
|
height: 100px;
|
}
|
|
#center {
|
background-color: #00FFFF;
|
width: 100%;
|
min-height: 100%;
|
}
|
|
#foot {
|
background-color: #FF00FF;
|
width: 100%;
|
height: 100px;
|
}
|
|
.panel-head {
|
font-size: 1rem;
|
color: rgba(255, 255, 255, .7);
|
line-height: 2rem;
|
text-align: center;
|
background: linear-gradient(rgb(0, 20, 30), rgb(0, 40, 70));
|
border: 2px solid rgba(0, 90, 120, .3);
|
}
|
|
.table-bordered td,
|
.table-bordered th {
|
border: 1px solid #ebedf2;
|
}
|
|
.canvasWrap {
|
width: 100%;
|
height: 100%
|
}
|
|
.mark_list {
|
position: absolute;
|
top: 20px;
|
right: 10px;
|
}
|
span{
|
color: #191E3A;
|
}
|
.mark_list li {
|
float: left;
|
width: 100px;
|
border-radius: 4px;
|
border: 1px solid #ccc;
|
list-style: none;
|
line-height: 30px;
|
text-align: center;
|
color: #333;
|
background: #fff;
|
cursor: pointer;
|
}
|
|
.mark_list li:hover {
|
background: #009a8f;
|
color: #fff;
|
}
|
|
.popup {
|
width: 100vw;
|
height: 100vh;
|
background-color: rgba(0, 0, 0, .5);
|
position: fixed;
|
left: 0;
|
top: 0;
|
bottom: 0;
|
right: 0;
|
display: none;
|
justify-content: center;
|
align-items: center;
|
z-index: 9999;
|
}
|
|
.popup-content {
|
width: 640px;
|
height: 360px;
|
background-color: #fff;
|
box-sizing: border-box;
|
/*padding: 10px 30px;*/
|
color: black;
|
}
|
|
.blue{
|
margin-top: 14px;
|
font-weight: bolder;
|
font-size: 14px;
|
}
|
.blue1,.blue2,.blue3,.blue4:active{
|
color: black;
|
border-radius: 5px;
|
|
}
|
.blue4{
|
color: black;
|
border-radius: 5px;
|
}
|
.blue1{
|
text-decoration: none;
|
color: white;
|
font-weight: bolder;
|
}
|
#maphead0,#wrap0{
|
height:750px;
|
}
|
#maphead1,#wrap1{
|
height: 750px;
|
}
|
#maphead2,#wrap2{
|
height: 750px;
|
}
|
#maphead3,#wrap3{
|
height: 750px;
|
}
|
/* 小型手机 */
|
@media (max-width: 360px) {
|
#maphead0,#wrap0{
|
height:550px;
|
}
|
#maphead1,#wrap1{
|
height: 550px;
|
}
|
#maphead2,#wrap2{
|
height: 550px;
|
}
|
#maphead3,#wrap3{
|
height: 550px;
|
}
|
}
|
</style>
|
</head>
|
|
<body>
|
|
<!-- BEGIN LOADER -->
|
<!-- <div id="load_screen">
|
<div class="loader">
|
<div class="loader-content">
|
<div class="spinner-grow align-self-center"></div>
|
</div>
|
</div>
|
</div> -->
|
<!-- END LOADER -->
|
<div class="border-left"
|
style="opacity: 0.4; float: left; position: absolute; z-index: 1; left: 120px; height: 20px;">
|
<img alt="" src="/hxzkoa/resources/images/border.png" class="img-left">
|
</div>
|
<div class="border-right"
|
style="opacity: 0.4; float: right; position: absolute; z-index: 2; right: 120px;">
|
<img alt="" src="/hxzkoa/resources/images/border2.png" class="img-right">
|
</div>
|
<!-- <div>
|
<input style="width: 200px;position: fixed;top: 50px;right: 230px;z-index: 9999;" type="text"
|
id="tagidaaa" class="form-control" placeholder="请输入标签ID">
|
<button style="width: 80px;position: fixed;top: 50px;right: 130px;z-index: 9999;" type="button"
|
class="btn btn-secondary" id="search">搜索</button>
|
<button style="width: 80px;position: fixed;top: 50px;right: 130px;z-index: 9999;" type="button"
|
class="btn btn-secondary" id="stop">取消</button>
|
</div> -->
|
<%-- <div--%>
|
<%-- style="width: 300px; display: flex; justify-content: space-between; position: absolute; top: 50px; right: 28px; z-index: 9999;">--%>
|
<%-- <input style="width: 200px;" type="text" id="tagidaaa" class="form-control"--%>
|
<%-- placeholder="请输入标签ID">--%>
|
<%-- <button style="width: 80px;" type="button" class="btn btn-secondary" id="search">搜索</button>--%>
|
<%-- <button style="width: 80px;" type="button" class="btn btn-secondary" id="stop">取消</button>--%>
|
<%-- <!-- <button type="button" onclick="showPopup()">弹窗</button> -->--%>
|
<%-- </div>--%>
|
<!-- BEGIN NAVBAR -->
|
<div class="login-page"></div>
|
<!-- END NAVBAR -->
|
|
<!-- BEGIN TOPBAR -->
|
<div class="header-page"></div>
|
<!-- END TOPBAR -->
|
|
<!-- BEGIN CONTENT PART -->
|
<div class="container-fluid">
|
<div class="layout-px-spacing">
|
<div class="row layout-top-spacing" id="cancel-row">
|
<div class="col-xl-12 col-lg-12 col-sm-12">
|
<div class="widget widget-one_hybrid widget-engagement" id="map0"
|
style="width: 100%; float: left;" ondblclick="changemap0()">
|
<div class="widget-heading" style="width: 100%" id="maphead0">
|
<div class='panel-head' id="mapname0">地图0</div>
|
<div style="width: 100%; float: left" id="wrap0">
|
<canvas id="draw0"></canvas>
|
<p style="z-index: 9999;" id="jiazai0">正在加载地图......</p>
|
</div>
|
</div>
|
</div>
|
<div class="widget widget-one_hybrid widget-engagement"
|
style=" width: 100%; float: left;position: absolute;" id="map1"
|
ondblclick="changemap1()">
|
<div class="widget-heading" style=" width: 100%;" id="maphead1">
|
<div class='panel-head' id="mapname1">地图1</div>
|
<div style="width: 100%; float: left" id="wrap1">
|
<canvas id="draw1"></canvas>
|
<p style="z-index: 9999;" id="jiazai1">正在加载地图......</p>
|
</div>
|
</div>
|
</div>
|
<div class="widget widget-one_hybrid widget-engagement"
|
style="width: 100%; float: left;position: absolute;" id="map2"
|
ondblclick="changemap2()">
|
<div class="widget-heading" style=" width: 100%;" id="maphead2">
|
<div class='panel-head' id="mapname2">地图2</div>
|
<div style="width: 100%; float: left" id="wrap2">
|
<canvas id="draw2"></canvas>
|
<p style="z-index: 9999;" id="jiazai2">正在加载地图......</p>
|
</div>
|
</div>
|
</div>
|
<div class="widget widget-one_hybrid widget-engagement"
|
style="width:100%; float: left;position: absolute;" id="map3"
|
ondblclick="changemap3()">
|
<div class="widget-heading" style="; width: 100%;" id="maphead3">
|
<div class='panel-head' id="mapname3">地图3</div>
|
<div style="width: 100%; float: left" id="wrap3">
|
<canvas id="draw3"></canvas>
|
<p style="z-index: 9999;" id="jiazai3">正在加载地图......</p>
|
</div>
|
</div>
|
</div>
|
|
</div>
|
</div>
|
</div>
|
</div>
|
|
|
<%--<div id="boxfloor1" style="width: 46px;height: 40px;position: absolute;top: 430px;left: 1810px;background-color: white;border-radius: 8px;opacity: 0.8;">--%>
|
<%-- <a href="/hxzkoa/show.do" onclick="shouye()" id="shouye" style="margin-top: 4px;display: inline-block" ><img src="/hxzkoa/hxzk/image/icon/shouye.png" width="30"></a>--%>
|
<%--</div>--%>
|
<%--<!-- END CONTENT PART -->--%>
|
<%--<div style="background-color: white;width: 46px;height: 194px;border-radius: 10px;padding-top: 10px;padding-bottom: 10px;position: absolute;top: 500px;left: 1810px;opacity: 0.8;box-shadow: 2px 2px 3px black;z-index: 99999" id="boxfloor">--%>
|
<%-- <a href="#" class="blue1"><div class="blue11" style="text-align: center;height: 30px;width: 30px;line-height: 30px;margin-top: 14px;margin: auto;color: black"onclick="f1()">F1</div></a>--%>
|
<%-- <div style="margin: auto;width: 30px;border-top: 1px solid #cccccc;margin-top: 7px;display: none" class="f2"></div>--%>
|
<%-- <a href="#" class="blue1"><div class="blue22" style="text-align: center;height: 30px;width: 30px;line-height: 30px;margin-top: 14px;margin: auto;margin-top: 10px;display: none;color: black" id="f2" onclick="f2()">F2</div></a>--%>
|
<%-- <div style="margin: auto;width: 30px;border-top: 1px solid #cccccc;margin-top: 7px;display: none" class="f3"></div>--%>
|
<%-- <a href="#" class="blue1"><div class="blue33" style="text-align: center;height: 30px;width: 30px;line-height: 30px;margin-top: 14px;margin: auto;margin-top: 10px;display: none;color: black" id="f3" onclick="f3()">F3</div></a>--%>
|
<%-- <div style="margin: auto;width: 30px;border-top: 1px solid #cccccc;margin-top: 7px;display: none" class="f4"></div>--%>
|
<%-- <a href="#" class="blue1"><div class="blue44" style="text-align: center;height: 30px;width: 30px;line-height: 30px;margin-top: 14px;margin: auto;margin-top: 10px;display: none;color: black" id="f4" onclick="f4()">F4</div></a>--%>
|
<%--</div>--%>
|
|
<!-- END MAIN CONTAINER -->
|
<% String username=(String) session.getAttribute("username"); if (username==null ||
|
username.equals("")) { request.getRequestDispatcher("/hxzk/login.jsp").forward(request,
|
response); return; } %>
|
<input type="hidden" name="xianusera" id="xianusera" value="<%=username%>">
|
<!-- BEGIN GLOBAL MANDATORY SCRIPTS -->
|
<script src="/hxzkoa/hxzk/assets/js/libs/jquery-3.1.1.min.js"></script>
|
<script src="/hxzkoa/hxzk/assets/js/vxgplayer-1.8.40.min.js"></script>
|
<script src="/hxzkoa/hxzk/bootstrap/js/popper.min.js"></script>
|
<script src="/hxzkoa/hxzk/bootstrap/js/bootstrap.min.js"></script>
|
<script src="/hxzkoa/hxzk/plugins/perfect-scrollbar/perfect-scrollbar.min.js"></script>
|
<script src="/hxzkoa/hxzk/assets/js/app.js"></script>
|
<script src="/hxzkoa/hxzk/plugins/sweetalerts/promise-polyfill.js"></script>
|
<script src="/hxzkoa/hxzk/plugins/sweetalerts/sweetalert2.min.js"></script>
|
<script src="/hxzkoa/hxzk/plugins/sweetalerts/custom-sweetalert.js"></script>
|
<script
|
src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/dataTables.buttons.min.js"></script>
|
<script src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/jszip.min.js"></script>
|
<script src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/buttons.html5.min.js"></script>
|
<script src="/hxzkoa/hxzk/plugins/table/datatable/button-ext/buttons.print.min.js"></script>
|
<script src="/hxzkoa/hxzk/assets/js/custom.js"></script>
|
<script>
|
var result;
|
var department = [];
|
window.onload = function () {
|
App.init();
|
$.ajax({
|
async: false,
|
type: "POST",
|
url: "/hxzkoa/jiedepartment.do",
|
data: {},
|
dataType: "json",
|
success: function (data) {
|
for (var i = 0; i < data.dataList.length; i++) {
|
department.push([data.dataList[i].departmentName, data.dataList[i].iconadress]);
|
};
|
if (data.dataList2[0].label == 0) {
|
$("#labela").css({ 'display': 'none' });
|
};
|
if (data.dataList2[0].achor == 0) {
|
$("#anchora").css({ 'display': 'none' });
|
};
|
if (data.dataList2[0].gps == 0) {
|
$("#gpsa").css({ 'display': 'none' });
|
};
|
if (data.dataList2[0].fence == 0) {
|
$("#fencea").css({ 'display': 'none' });
|
};
|
if (data.dataList2[0].warning == 0) {
|
$("#warninga").css({ 'display': 'none' });
|
};
|
if (data.dataList2[0].history == 0) {
|
$("#historya").css({ 'display': 'none' });
|
};
|
if (data.dataList2[0].attendance == 0) {
|
$("#attendancea").css({ 'display': 'none' });
|
};
|
if (data.dataList2[0].basiclnfo == 0) {
|
$("#basiclnfoa").css({ 'display': 'none' });
|
};
|
if (data.dataList2[0].video == 0) {
|
$("#videoa").css({ 'display': 'none' });
|
};
|
if (data.dataList2[0].gas == 0) {
|
$("#gasa").css({ 'display': 'none' });
|
};
|
},
|
});
|
document.getElementById("xianuser").innerHTML = document.getElementById("xianusera").value
|
result = getAllMap(); //result["mapname"]=mapnamelist, ['floor']=floorlist
|
diaoyonghuatu(result);
|
};
|
|
$('.header-page').load('/hxzkoa/hxzk/top.html'); $('.login-page').load('/hxzkoa/hxzk/head.html');
|
</script>
|
|
<!-- END GLOBAL MANDATORY SCRIPTS -->
|
|
<!-- > BEGIN PAGE FUNCTION SCRIPTS -->
|
|
|
<script>
|
|
|
//选择楼层
|
function f1(){
|
document.getElementById("map0").style.display = "block";
|
document.getElementById("map1").style.display = "none";
|
document.getElementById("map2").style.display = "none";
|
document.getElementById("map3").style.display = "none";
|
$(".blue11").css("background-color","#1DECFE")
|
$(".blue22").css("background-color","white")
|
$(".blue33").css("background-color","white")
|
$(".blue44").css("background-color","white")
|
}
|
function f2(){
|
document.getElementById("map1").style.width = "100%";
|
document.getElementById("maphead1").style.height = "800px";
|
document.getElementById("wrap1").style.height = "750px";
|
document.getElementById("map0").style.display = "none";
|
document.getElementById("map1").style.display = "block";
|
document.getElementById("map2").style.display = "none";
|
document.getElementById("map3").style.display = "none";
|
$(".blue22").css("background-color","#1DECFE")
|
$(".blue33").css("background-color","white")
|
$(".blue44").css("background-color","white")
|
$(".blue11").css("background-color","white")
|
}
|
function f3(){
|
document.getElementById("map2").style.width = "100%";
|
document.getElementById("maphead2").style.height = "800px";
|
document.getElementById("wrap2").style.height = "750px";
|
document.getElementById("map0").style.display = "none";
|
document.getElementById("map1").style.display = "none";
|
document.getElementById("map2").style.display = "block";
|
document.getElementById("map3").style.display = "none";
|
$(".blue33").css("background-color","#1DECFE")
|
$(".blue44").css("background-color","white")
|
$(".blue22").css("background-color","white")
|
$(".blue11").css("background-color","white")
|
}
|
function f4(){
|
document.getElementById("map3").style.width = "100%";
|
document.getElementById("maphead3").style.height = "800px";
|
document.getElementById("wrap3").style.height = "750px";
|
document.getElementById("map0").style.display = "none";
|
document.getElementById("map1").style.display = "none";
|
document.getElementById("map2").style.display = "none";
|
document.getElementById("map3").style.display = "block";
|
$(".blue44").css("background-color","#1DECFE")
|
$(".blue33").css("background-color","white")
|
$(".blue22").css("background-color","white")
|
$(".blue11").css("background-color","white")
|
}
|
|
|
|
|
//首页地图控制
|
var full_screen = false;
|
var timer_list = [];
|
function getAllMap() {
|
var map = [];
|
var floor = [];
|
$.ajax({
|
async: false,
|
type: "POST",
|
url: "/hxzkoa/qiehuanditu_option.do",
|
dataType: 'json',
|
data: {},
|
success: function (data) {
|
if (data.length == 0) {
|
document.getElementById("map0").style.display = "none";
|
document.getElementById("map1").style.display = "none";
|
document.getElementById("map2").style.display = "none";
|
document.getElementById("map3").style.display = "none";
|
|
} else if (data.length == 1) {
|
tubiaochicun = 0.015;
|
document.getElementById("map0").style.width = "100%";
|
document.getElementById("mapname0").innerHTML = data[0].mapname;
|
document.getElementById("maphead0").style.height = "800px";
|
document.getElementById("wrap0").style.height = "750px";
|
document.getElementById("map1").style.display = "none";
|
document.getElementById("map2").style.display = "none";
|
document.getElementById("map3").style.display = "none";
|
full_screen = true;
|
}
|
|
if (data.length == 1) {
|
$("#f1").css("display", "block")
|
$("#boxfloor").css("height","50px")
|
}
|
if (data.length == 2) {
|
$("#f2").css("display", "block")
|
$(".f2").css("display", "block")
|
$("#boxfloor").css("height","100px")
|
}
|
if (data.length == 3) {
|
$("#f2").css("display", "block")
|
$(".f2").css("display", "block")
|
$("#f3").css("display", "block")
|
$(".f3").css("display", "block")
|
$("#boxfloor").css("height","150px")
|
}
|
if (data.length == 4) {
|
$("#f2").css("display", "block")
|
$(".f2").css("display", "block")
|
$("#f3").css("display", "block")
|
$(".f3").css("display", "block")
|
$("#f4").css("display", "block")
|
$(".f4").css("display", "block")
|
}
|
$(".floor1").css("display", "block")
|
for (var i = 0; i < data.length; i++) {
|
console.log("123456789")
|
str = "mapname" + i;
|
document.getElementById(str).innerHTML = data[i].mapname;
|
map.push(data[i].mapname);
|
floor.push(data[i].floor);
|
if (i == 3) {
|
break;
|
}
|
};
|
},
|
});
|
var result = [];
|
result['map'] = map;
|
result['floor'] = floor;
|
return result
|
}
|
|
</script>
|
|
<!-- 常用函数 -->
|
<script>
|
function BezierEllipse2(ctx, x, y, a, b) {
|
var k = .5522848,
|
ox = a * k, // 水平控制点偏移量
|
oy = b * k; // 垂直控制点偏移量</p> <p> ctx.beginPath();
|
|
//从椭圆的左端点开始顺时针绘制四条三次贝塞尔曲线
|
ctx.moveTo(x - a, y);
|
ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);
|
ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);
|
ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);
|
ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);
|
ctx.closePath();
|
ctx.stroke();
|
};
|
|
function getTruemap_all() {
|
var map_wl = {};
|
$.ajax({
|
async: false,
|
type: "POST",
|
url: "/hxzkoa/floornumTomap_all.do",
|
dataType: 'json',
|
data: {},
|
success: function (data) {
|
let tmp = new Set();
|
for (var i = 0; i < data.length; i++) {
|
tmp.add(data[i].floor);
|
};
|
let tmpl = Array.from(tmp);
|
for (i in tmpl) {
|
map_wl[tmpl[i]] = [];
|
}
|
for (var i = 0; i < data.length; i++) {
|
map_wl[data[i].floor].push([data[i].x_Truelength, data[i].y_Truewidth]);
|
}
|
},
|
});
|
return map_wl;
|
};
|
|
function getYuandian_all() {
|
var yuandian = {};
|
$.ajax({
|
async: false,
|
type: "POST",
|
url: "/hxzkoa/floornumTomap_all.do",
|
dataType: 'json',
|
data: {},
|
success: function (data) {
|
let tmp = new Set();
|
for (var i = 0; i < data.length; i++) {
|
tmp.add(data[i].floor);
|
};
|
let tmpl = Array.from(tmp);
|
for (i in tmpl) {
|
yuandian[tmpl[i]] = [];
|
}
|
for (var i = 0; i < data.length; i++) {
|
yuandian[data[i].floor].push([data[i].x0_length, data[i].y0_width]);
|
}
|
}
|
});
|
return yuandian;
|
};
|
|
function getSystemSetting() {
|
var sysset = [];
|
$.ajax({
|
async: false,
|
type: 'POST',
|
url: "/hxzkoa/getSysSetting_list.do",
|
dataType: 'json',
|
success: function (data) {
|
sysset = data;
|
},
|
});
|
return sysset;
|
};
|
|
function loadImages(sources, callback) {
|
var count = 0,
|
images = {},
|
imgNum = 0;
|
for (src in sources) {
|
imgNum++;
|
}
|
for (src in sources) {
|
images[src] = new Image();
|
|
images[src].onload = function () {
|
if (++count >= imgNum) {
|
callback(images);
|
}
|
}
|
images[src].src = sources[src];
|
}
|
};
|
|
function getTrackColor(yanse) {
|
var color;
|
if (yanse == "红色") {
|
var color = "red";
|
} else if (yanse == "绿色") {
|
var color = "green";
|
} else if (yanse == "蓝色") {
|
var color = "blue";
|
} else if (yanse == "白色") {
|
var color = "white";
|
} else if (yanse == "黑色") {
|
var color = "black";
|
} else if (yanse == "黄色") {
|
var color = "yellow";
|
}
|
return color
|
};
|
|
function getExistFence_all(leixing) {
|
var fencelist = {};
|
var fencecolor = {};
|
var fencename = {};
|
var fencetype = {};
|
$.ajax({
|
async: false,
|
type: 'POST',
|
url: "/hxzkoa/getFloorFence_all.do",
|
dataType: 'json',
|
data: {},
|
success: function (data) {
|
let tmp = new Set();
|
for (var i = 0; i < data.length; i++) {
|
tmp.add(data[i].floor);
|
};
|
let tmpl = Array.from(tmp);
|
for (i in tmpl) {
|
fencelist[tmpl[i]] = [];
|
fencecolor[tmpl[i]] = [];
|
fencename[tmpl[i]] = [];
|
fencetype[tmpl[i]] = [];
|
}
|
for (var i = 0; i < data.length; i++) {
|
fencelist[data[i].floor].push(data[i].zuobiao);
|
fencecolor[data[i].floor].push(data[i].color);
|
fencename[data[i].floor].push(data[i].name);
|
fencetype[data[i].floor].push(data[i].type);
|
}
|
}
|
});
|
if (leixing == "zuobiao") {
|
return fencelist
|
} else if (leixing == "color") {
|
return fencecolor
|
} else if (leixing == "name") {
|
return fencename
|
} else if (leixing == "type") {
|
return fencetype
|
};
|
};
|
|
function getDrawColor(yanse) {
|
var color;
|
if (yanse == "红色") {
|
var color = "rgba(255,0,0,0.3)";
|
} else if (yanse == "绿色") {
|
var color = "rgba(0,255,0,0.3)";
|
} else if (yanse == "蓝色") {
|
var color = "rgba(0,0,255,0.3)";
|
} else if (yanse == "白色") {
|
var color = "rgba(255,255,255,0.3)";
|
} else if (yanse == "黑色") {
|
var color = "rgba(0,0,0,0.3)";
|
}
|
return color
|
};
|
function inFenceOrNot(fence_list, node_list) {
|
//fence_list[x,y]
|
//node_list[x,y]
|
if (fence_list.length == 2) { //矩形
|
if (node_list[0] >= Math.min(fence_list[0][0], fence_list[1][0]) && node_list[0] <= Math.max(fence_list[0][0], fence_list[1][0])) {
|
if (node_list[1] >= Math.min(fence_list[0][1], fence_list[1][1]) && node_list[1] <= Math.max(fence_list[0][1], fence_list[1][1])) {
|
return true //在考勤区域
|
}
|
}
|
return false //不在考勤区域
|
} else if (fence_list.length > 2) { //多边形
|
for (var c = false, i = -1, l = fence_list.length, j = l - 1; ++i < l; j = i)
|
((fence_list[i][1] <= node_list[1] && node_list[1] < fence_list[j][1]) || (fence_list[j][1] <= node_list[1] && node_list[1] < fence_list[i][1]))
|
&& (node_list[0] < (fence_list[j][0] - fence_list[i][0]) * (node_list[1] - fence_list[i][1]) / (fence_list[j][1] - fence_list[i][1]) + fence_list[i][0])
|
&& (c = !c);
|
return c;
|
}
|
};
|
|
function getGas(leixing) {
|
var gaslist = [];
|
var gasnongdu = [];
|
var gastype = [];
|
$.ajax({
|
async: false,
|
type: 'POST',
|
url: "/hxzkoa/getGas_list.do",
|
dataType: 'json',
|
data: {},
|
success: function (data) {
|
for (var i = 0; i < data.length; i++) {
|
gaslist.push([data[i].x, data[i].y]);
|
gasnongdu.push(data[i].nong_du);
|
gastype.push(data[i].gas_type);
|
}
|
}
|
});
|
if (leixing == "zuobiao") {
|
return gaslist
|
} else if (leixing == "type") {
|
return gastype
|
} else if (leixing == "nongdu") {
|
return gasnongdu
|
};
|
};
|
|
function getRealPosition(current_floor) {
|
var realposition = [];
|
$.ajax({
|
async: false,
|
type: 'POST',
|
url: "/hxzkoa/getRealPosition.do",
|
dataType: 'json',
|
data: {
|
floor: current_floor,
|
},
|
success: function (data) {
|
for (var i = 0; i < data.length; i++) {
|
//playMark[id,name,power,life,x,y,time]
|
realposition.push([data[i].tagid, data[i].name, data[i].power, data[i].life, data[i].posx, data[i].posy, data[i].time, data[i].fence == 1 || data[i].sos == 1, data[i].sousuo, data[i].shipin, data[i].bumen, data[i].baoliu22])
|
}
|
},
|
});
|
return realposition
|
};
|
|
function str_to_time(str) {
|
//根据字符串转换成对应的时间(秒)
|
if (str == "不显示实时轨迹") {
|
return 0;
|
} else if (str == "10秒钟") {
|
return 10;
|
} else if (str == "30秒钟") {
|
return 30;
|
} else if (str == "1分钟") {
|
return 60;
|
} else if (str == "10分钟") {
|
return 600;
|
} else if (str == "30分钟") {
|
return 1800;
|
} else if (str == "1小时") {
|
return 3600;
|
};
|
};
|
|
function getTracknow(current_floor, tagid_str, time) {
|
var finalrealtrack = {};
|
$.ajax({
|
async: false,
|
type: 'POST',
|
url: "/hxzkoa/getRealTrack.do",
|
dataType: 'json',
|
data: {
|
time: time,
|
floor: current_floor,
|
tagid: tagid_str,
|
},
|
success: function (data) {
|
for (var i = 0; i < data.length; i++) {
|
finalrealtrack[data[i][0].tagid] = [];
|
for (var j = 0; j < data[i].length; j++) {
|
finalrealtrack[data[i][0].tagid].push([data[i][j].x, data[i][j].y, data[i][j].time])
|
}
|
}
|
},
|
});
|
return finalrealtrack;
|
};
|
|
function getAnchorInfo_all() {
|
var anchorList_on = {};
|
var anchorList_off = {};
|
$.ajax({
|
async: false,
|
type: 'POST',
|
url: "/hxzkoa/getAnchorInfo_all.do",
|
dataType: 'json',
|
data: {},
|
success: function (data) {
|
let tmp = new Set();
|
for (var i = 0; i < data.length; i++) {
|
tmp.add(data[i].layer);
|
};
|
let tmpl = Array.from(tmp);
|
for (i in tmpl) {
|
anchorList_on[tmpl[i]] = [];
|
anchorList_off[tmpl[i]] = [];
|
}
|
for (var i = 0; i < data.length; i++) {
|
if (data[i].anchormode == "1") {
|
anchorList_on[data[i].layer].push([data[i].anchorid, data[i].posx, data[i].posy, data[i].posz, data[i].GreateTime]);
|
} else if (data[i].anchormode == "0") {
|
anchorList_off[data[i].layer].push([data[i].anchorid, data[i].posx, data[i].posy, data[i].posz, data[i].GreateTime]);
|
|
}
|
}
|
}
|
});
|
return [anchorList_on, anchorList_off]
|
};
|
|
/**该方法用来绘制一个有填充色的圆角矩形
|
*@param cxt:canvas的上下文环境
|
*@param x:左上角x轴坐标
|
*@param y:左上角y轴坐标
|
*@param width:矩形的宽度
|
*@param height:矩形的高度
|
*@param radius:圆的半径
|
*@param fillColor:填充颜色
|
**/
|
function fillRoundRect(cxt, x, y, width, height, radius, /*optional*/ fillColor) {
|
//圆的直径必然要小于矩形的宽高
|
if (2 * radius > width || 2 * radius > height) { return false; }
|
|
cxt.save();
|
cxt.translate(x, y);
|
//绘制圆角矩形的各个边
|
drawRoundRectPath(cxt, width, height, radius);
|
cxt.fillStyle = fillColor || "#000"; //若是给定了值就用给定的值否则给予默认值
|
cxt.fill();
|
cxt.restore();
|
}
|
|
function drawRoundRectPath(cxt, width, height, radius) {
|
cxt.beginPath(0);
|
//从右下角顺时针绘制,弧度从0到1/2PI
|
cxt.arc(width - radius, height - radius, radius, 0, Math.PI / 2);
|
|
//矩形下边线
|
cxt.lineTo(radius, height);
|
|
//左下角圆弧,弧度从1/2PI到PI
|
cxt.arc(radius, height - radius, radius, Math.PI / 2, Math.PI);
|
|
//矩形左边线
|
cxt.lineTo(0, radius);
|
|
//左上角圆弧,弧度从PI到3/2PI
|
cxt.arc(radius, radius, radius, Math.PI, Math.PI * 3 / 2);
|
|
//上边线
|
cxt.lineTo(width - radius, 0);
|
|
//右上角圆弧
|
cxt.arc(width - radius, radius, radius, Math.PI * 3 / 2, Math.PI * 2);
|
|
//右边线
|
cxt.lineTo(width, height - radius);
|
cxt.closePath();
|
}
|
</script>
|
<!-- 常用函数结束 -->
|
|
<!-- 调用室内定位地图功能 -->
|
<script>
|
var tubiaochicun = 0.03;
|
var lio = 0;
|
// var zuobiaochicun = 30;
|
// var dianliangchicun = 15;
|
function diaoyonghuatu(result) {
|
|
var truemap_list = getTruemap_all();
|
var yuandian_list = getYuandian_all();
|
var fencezuobiao_list = getExistFence_all("zuobiao");
|
var fencecolor_list = getExistFence_all("color");
|
var fencename_list = getExistFence_all("name");
|
var fencetype_list = getExistFence_all("type");
|
var onlineAnchorinfo_list = getAnchorInfo_all()[0];
|
var offlineAnchorinfo_list = getAnchorInfo_all()[1];
|
|
//读取系统设置
|
var sysSetting = getSystemSetting();
|
|
for (var i = 0; i < result['map'].length; i++) {
|
var cf = result['floor'][i];//当前floor
|
var tml = [];
|
if (truemap_list[cf]) {
|
tml = truemap_list[cf];
|
};
|
var ydl = [];
|
if (yuandian_list[cf]) {
|
ydl = yuandian_list[cf];
|
};
|
var fzbl = [];
|
if (fencezuobiao_list[cf]) {
|
fzbl = fencezuobiao_list[cf];
|
};
|
var fcl = [];
|
if (fencecolor_list[cf]) {
|
fcl = fencecolor_list[cf];
|
};
|
var fnl = [];
|
if (fencename_list[cf]) {
|
fnl = fencename_list[cf];
|
};
|
var ftl = []
|
if (fencetype_list[cf]) {
|
ftl = fencetype_list[cf];
|
};
|
var ail_on = [];
|
if (onlineAnchorinfo_list[cf]) {
|
ail_on = onlineAnchorinfo_list[cf];
|
};
|
var ail_off = [];
|
if (offlineAnchorinfo_list[cf]) {
|
ail_off = offlineAnchorinfo_list[cf];
|
};
|
subgraph(i, result['map'][i], result['floor'][i], tml, ydl, fzbl, fcl, fnl, ftl, ail_on, ail_off, sysSetting, result['map'].length)
|
}
|
|
};
|
//subgraph(i,result['map'][i],result['floor'][i],tml,ydl,fzbl,fcl,fnl,ftl,ail,sysSetting)
|
function subgraph(index, mp, fr, tml, ydl, fzbl, fcl, fnl, ftl, ail_on, ail_off, sysSetting, ttm) {
|
var imgUrl = '/hxzkoa/hxzk/image/mapfile/' + mp;//图片路径
|
//var imgUrl = '/hxzkoa/hxzk/image/mapfile/office.jpg';//图片路径
|
var imgList = new Array();
|
imgList['map'] = imgUrl;
|
var iconUrl = '/hxzkoa/hxzk/image/targeticon/default.png';
|
imgList['icon'] = iconUrl;
|
for (var i = 0; i < department.length; i++) {
|
imgList[department[i][0]] = '/hxzkoa/hxzk/' + department[i][1];
|
}
|
|
|
// var anckicon = '/hxzkoa/hxzk/image/anchor/lingjin.png';
|
// imgList['anchor']=anckicon;
|
var anckicon_on = '/hxzkoa/hxzk/image/anchor/基站在线.png';
|
//var anckicon_on = '/hxzkoa/hxzk/image/anchor/lingjin.png';
|
imgList['anchor_online'] = anckicon_on;
|
|
var anckicon_off = '/hxzkoa/hxzk/image/anchor/基站离线.png'
|
//var anckicon_off = '/hxzkoa/hxzk/image/anchor/ceju.png';
|
imgList['anchor_offline'] = anckicon_off;
|
|
new MarkPoints(index, fr, imgList, tml, ydl, fzbl, fcl, fnl, ftl, ail_on, ail_off, sysSetting, ttm);
|
};
|
var serial;
|
var code;
|
var sousuopanduan = "";
|
var isDelete = false;
|
var tuodong = false;
|
var colorbbb = "rgba(255,0,0,0.3)";
|
var sosType = [];
|
var sousuoType = true;
|
for (var i = 0; i < 500; i++) {
|
sosType[i] = true;
|
}
|
var sos = document.createElement('img');
|
sos.src = '/hxzkoa/hxzk/image/icon/SOS.png';
|
var sos1 = document.createElement('img');
|
sos1.src = '/hxzkoa/hxzk/image/icon/SOS1.png';
|
var sousuo0 = document.createElement('img');
|
sousuo0.src = '/hxzkoa/hxzk/image/icon/sousuo0.png';
|
function MarkPoints(index, current_floor, imgList, tml, ydl, fzbl, fcl, fnl, ftl, ail_on, ail_off, sysSetting, ttm) {
|
this.imgX = 0;//在画布上图片的X偏移量
|
this.imgY = 0;//在画布上图片的Y偏移量
|
this.imgScale = 1;//图片的缩放比例
|
this.rateNum;//图片高度自适应比例,图片等比居中展示在canvas
|
this.scaleFlag = 0;//缩放因子,最大缩放9,最小缩放-9
|
this.context;
|
this.img; //地图
|
this.playIndex = 0;
|
this.pos = {};//每次拖拽前坐标保存
|
|
this.imgLoadList = new Array();
|
this.rateNumList = new Array();
|
this.imgXList = new Array();
|
this.imgYList = new Array();
|
this.imgScaleList = new Array();
|
|
//获取真实地图
|
this.trueMeasure;
|
this.trueLength;
|
this.trueWidth;
|
this.x_ratio;
|
this.y_ratio;
|
this.x_x0;
|
this.y_y0;
|
this.expand = false;
|
|
//system setting
|
this.sysSetting;
|
this.tagZb = '0';//是否显示标签坐标
|
this.diskaoqin = '0'; //出考勤区域是否消失
|
this.viewAnckid = '0';//是否显示基站ID
|
this.viewName = '0';//是否显示人员名称
|
this.tunlDw = '0'//隧道定位模式
|
this.guiji_sava = '0'//是否开启轨迹保存
|
this.viewPower = '0';//是否显示电量
|
this.viewTagid = '0';//是否显示标签ID
|
this.viewAnckzb = '0';//是否显示基站坐标
|
this.offView = '0'//是否离线不显示图标
|
this.anckicon = '0'//是否显示基站图标
|
this.gas_show = '0'//显示其他检测(气体显示)
|
this.quiet = '0'//静止输出固定坐标
|
this.real_trak_time = 0//实时轨迹显示时长
|
this.real_trak_color = '红色'//实时轨迹显示的颜色
|
this.fence_show = '0'//是否显示围栏
|
|
this.playFlag = false;//是否播放
|
this.dragFlag = false;//是否可拖拽当前img,默认不能
|
this.markFlag = false;//标记区域开启关闭flag
|
this.CreatLinepoints = [];//每次创建新区域的坐标集合
|
this.playMark; //正在展示的标记
|
this.playAchor; //正在展示的基站
|
this.playAchorli; //正在展示的基站
|
this.playMarkInKaoQin;//当前标记是否在考勤区域内
|
this.trackNow; //当前轨迹
|
|
this.onlineAnchorList;//当前基站列表
|
this.offlineAnchorList;
|
|
this.allMarkLins = [];//已创建的区域集合,例如[[{x,y},{x,y},{x,y}],[{n,m},{n,m},{n,m}]]目前只需要一个区域,所以数组内部只有一项
|
this.allFenceColor = [];//已创建的区域颜色
|
|
this.FenceList; //围栏坐标
|
this.FenceColor; //围栏颜色
|
this.FenceName; //围栏名称
|
this.realFenceList = []; // [名称,类型,实际坐标]
|
this.fenceMarkCount; //区域内的坐标数量
|
this.cacheCanvas = null; //缓存围栏绘图
|
|
this.GasList; //气体坐标
|
this.GasType; //气体类型
|
this.GasNongdu; //气体浓度
|
|
this.ttm;
|
this.timer;
|
|
this.getImgLoad(index, imgList, current_floor);
|
this.init(current_floor, tml, ydl, fzbl, fcl, fnl, ftl, ail_on, ail_off, sysSetting, ttm);
|
|
document.oncontextmenu = new Function("event.returnValue=false;");
|
document.onselectstart = new Function("event.returnValue=false;");
|
};
|
|
MarkPoints.prototype = {
|
getImgLoad: function (index, imgList, current_floor) {
|
var _this = this;
|
var str = "wrap" + index;
|
var wrap = document.getElementById(str);
|
var str2 = "draw" + index;
|
_this.canvas = document.getElementById(str2);
|
_this.context = _this.canvas.getContext('2d');
|
_this.canvas.height = wrap.offsetHeight;
|
_this.canvas.width = wrap.offsetWidth;
|
|
loadImages(imgList, function (images) {
|
for (var key in images) {
|
if (key == 'map') {
|
_this.imgScaleList[key] = 1;
|
_this.img = images[key];
|
} else if (key == 'icon') {
|
_this.imgScaleList[key] = tubiaochicun;
|
} else {
|
_this.imgScaleList[key] = images[key].naturalWidth / images['map'].naturalWidth;
|
};
|
_this.rateNumList[key] = _this.canvas.width / images[key].naturalWidth;
|
_this.imgXList[key] = (_this.canvas.width - images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2;
|
_this.imgYList[key] = (_this.canvas.height - images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]) / 2;//默认进来当前图像居中显示
|
_this.imgLoadList[key] = images[key];
|
}
|
/*画出当前图片*/
|
//_this.drawImg(current_floor);
|
});
|
},
|
|
drawImg: function (current_floor) {
|
var _this = this;
|
var can = _this.context;
|
can.clearRect(0, 0, _this.canvas.width, _this.canvas.height);
|
|
can.globalCompositeOperation = "source-over";
|
var images = _this.imgLoadList;
|
|
//画地图
|
can.drawImage(_this.img, 0, 0, _this.img.naturalWidth, _this.img.naturalHeight, _this.imgXList['map'], _this.imgYList['map'], _this.img.naturalWidth * _this.imgScaleList['map'] * _this.rateNumList['map'], _this.img.naturalHeight * _this.imgScaleList['map'] * _this.rateNumList['map']);
|
|
$("#jiazai0").remove()
|
$("#jiazai1").remove()
|
$("#jiazai2").remove()
|
$("#jiazai3").remove()
|
|
//实际与图片的比例尺
|
_this.x_ratio = new Number(_this.imgLoadList['map'].naturalWidth / _this.trueLength);
|
_this.y_ratio = new Number(_this.imgLoadList['map'].naturalHeight / _this.trueWidth);
|
|
if (tuodong == true) {
|
return false;
|
}
|
|
if (_this.cacheCanvas == null) {
|
_this.cacheCanvas = document.createElement("canvas");
|
_this.cacheCanvas.width = _this.canvas.width;
|
_this.cacheCanvas.height = _this.canvas.height;
|
var cacheCtx = _this.cacheCanvas.getContext("2d");
|
//画出当前已有的围栏区域
|
if (_this.fence_show == "1") {
|
if (_this.FenceList.length) {
|
//遍历每个fence,并画出
|
for (var m = 0; m < _this.FenceList.length; m++) {
|
var draw_points_list = [];
|
var points_list = _this.FenceList[m].split(",");
|
//实际坐标转成图上坐标
|
for (var i = 0; i < points_list.length; i++) {
|
if (i % 2 == 0) {
|
//偶数坐标,即x坐标
|
tmp_list = [];
|
var tmp_point = new Number(_this.imgXList['map'] + _this.imgScaleList['map'] * _this.rateNumList['map'] * _this.x_ratio * (points_list[i] - _this.x_x0));
|
tmp_list.push(tmp_point);
|
} else {
|
var tmp_point = new Number(_this.imgYList['map'] + _this.imgScaleList['map'] * _this.rateNumList['map'] * _this.y_ratio * (points_list[i] - _this.y_y0));
|
tmp_list.push(tmp_point);
|
draw_points_list.push(tmp_list);
|
};
|
};
|
|
var color = getDrawColor(_this.FenceColor[m]);
|
var name = _this.FenceName[m];
|
|
if (draw_points_list.length == 2) {
|
cacheCtx.beginPath();
|
cacheCtx.fillStyle = color;
|
cacheCtx.fillRect(draw_points_list[0][0], draw_points_list[0][1], draw_points_list[1][0] - draw_points_list[0][0], draw_points_list[1][1] - draw_points_list[0][1]);
|
cacheCtx.stroke();
|
cacheCtx.fillStyle = "red";
|
cacheCtx.fillText(name, (draw_points_list[0][0] + draw_points_list[1][0]) / 2, (draw_points_list[0][1] + draw_points_list[1][1]) / 2);
|
cacheCtx.closePath();
|
} else {
|
cacheCtx.beginPath();
|
cacheCtx.fillStyle = color;
|
cacheCtx.lineWidth = 1;
|
var text_x = new Number(0);
|
var text_y = new Number(0);
|
for (var j = 0; j < draw_points_list.length; j++) {
|
if (j == 0) {
|
cacheCtx.moveTo(draw_points_list[j][0], draw_points_list[j][1]);
|
} else {
|
cacheCtx.lineTo(draw_points_list[j][0], draw_points_list[j][1]);
|
}
|
if (j == draw_points_list.length - 1) {
|
cacheCtx.lineTo(draw_points_list[0][0], draw_points_list[0][1]);
|
cacheCtx.fill();
|
}
|
text_x = text_x + draw_points_list[j][0];
|
text_y = text_y + draw_points_list[j][1];
|
|
}
|
text_x = text_x / draw_points_list.length;
|
text_y = text_y / draw_points_list.length;
|
|
cacheCtx.fillStyle = color;
|
cacheCtx.fill();
|
cacheCtx.strokeStyle = color;
|
cacheCtx.stroke();
|
cacheCtx.fillStyle = "red";
|
cacheCtx.fillText(name, text_x, text_y);
|
cacheCtx.closePath();
|
};
|
};
|
};
|
};
|
can.drawImage(_this.cacheCanvas, 0, 0);
|
} else {
|
can.drawImage(_this.cacheCanvas, 0, 0);
|
};
|
|
|
//判断当前坐标是否在考勤区域内
|
_this.playMarkInKaoQin = [];
|
for (var n in _this.playMark) { //_this.playMark为当前实时在线点位置,为[array[id,name,power,life,x,y,time]]
|
node_list = [Number(_this.playMark[n][4]), Number(_this.playMark[n][5])];
|
for (var f in _this.realFenceList) {
|
if (_this.realFenceList[f][1] == "考勤区域") {
|
if (inFenceOrNot(_this.realFenceList[f][2], node_list)) {
|
//inFenceOrNot(fence_list, node_list) return true/false
|
_this.playMarkInKaoQin.push(true);
|
break;
|
}
|
}
|
};
|
if (_this.playMarkInKaoQin.length == n) {
|
_this.playMarkInKaoQin.push(false);
|
}
|
};
|
|
|
//计算区域内的坐标数量(隧道定位)
|
_this.fenceMarkCount = [];
|
for (var f in _this.realFenceList) {
|
//f[name, type, zuobiao_array]
|
var tmp_count = new Number(0);
|
for (var n in _this.playMark) {//_this.playMark为当前实时在线点位置,为[array[.x, .y]]
|
node_list = [Number(_this.playMark[n][4]), Number(_this.playMark[n][5])];
|
if (inFenceOrNot(_this.realFenceList[f][2], node_list) && _this.playMark[n][3] == "1") {//inFenceOrNot(fence_list, node_list) return true/false
|
tmp_count += 1;
|
//break;
|
}
|
};
|
_this.fenceMarkCount.push(tmp_count);
|
};
|
|
//画标签及基站
|
for (var key in images) {
|
if (key == "icon" && _this.playMark) {
|
for (var i = 0; i < _this.playMark.length; i++) {
|
if (sousuopanduan == "" || sousuopanduan == _this.playMark[i][0] || sousuopanduan == _this.playMark[i][1]) {
|
var tagzhuangtai = _this.playMark[i][3]; //在线状态
|
//var playMarkInKaoQin = true;
|
if (((_this.offView == '1' && tagzhuangtai == '1') || (_this.offView == '0')) && ((_this.diskaoqin == "1" && _this.playMarkInKaoQin[i]) || (_this.diskaoqin == "0"))) {
|
//是否开启离线消失,并判断状态(在线1/离线0);当开启离线消失时(仅显示在线标签),当未开启离线消失时(全部显示)
|
//是否开启出考勤区域消失,并判断是否在考勤区域内;当开启出考勤区域消失时(需要在考勤区域内),当未开启时(全部显示)
|
|
//读取当前实际坐标
|
var cor_x = new Number(_this.playMark[i][4]); // 此处_this.playMark是数据库里取到的当前点坐标,4是posx,5是posy
|
var cor_y = new Number(_this.playMark[i][5]);
|
|
//转为图上坐标
|
var x_cor_now = new Number(_this.imgXList['map'] + _this.imgScaleList['map'] * _this.rateNumList['map'] * _this.x_ratio * (cor_x - _this.x_x0));
|
var y_cor_now = new Number(_this.imgYList['map'] + _this.imgScaleList['map'] * _this.rateNumList['map'] * _this.y_ratio * (cor_y - _this.y_y0));
|
|
//是否有轨迹拖尾
|
if (_this.real_trak_time != 0) {
|
var trackNow;
|
var pm = _this.playMark;
|
|
function ftn(current_floor, pm, tn, rtk, ctt, rtc, igxm, igym, igslm, rnlm, xr, yr, xx0, yy0) {
|
alert(tn)
|
//trackNow = getTracknow(current_floor, pm[0], rtk)
|
if (tn.length == 0) {
|
trackNow = [];
|
} else if (pm[0] in tn) {
|
trackNow = tn[pm[0]];
|
} else {
|
trackNow = [];
|
};
|
var can = ctt;
|
can.beginPath();
|
can.strokeStyle = rtc;
|
can.fillStyle = rtc;
|
for (var i = 0; i < trackNow.length; i++) {
|
var cor_x = new Number(trackNow[i][0]);
|
var cor_y = new Number(trackNow[i][1]);
|
var x_cor = new Number(igxm + igslm * rnlm * xr * (cor_x - xx0));
|
var y_cor = new Number(igym + igslm * rnlm * yr * (cor_y - yy0));
|
can.moveTo(x_cor, y_cor);
|
can.arc(x_cor, y_cor, 1, 0, Math.PI * 2, true);
|
can.fill();
|
};
|
can.closePath();
|
can.stroke();
|
trackNow = null;
|
}
|
setTimeout(ftn(current_floor, _this.playMark[i], _this.trackNow, _this.real_trak_time, _this.context, _this.real_trak_color, _this.imgXList['map'], _this.imgYList['map'], _this.imgScaleList['map'], _this.rateNumList['map'], _this.x_ratio, _this.y_ratio, _this.x_x0, _this.y_y0), 5);
|
//var trackNow = getTracknow( _this.playMark[i][0], _this.real_trak_time);//获取指定时间段内该tagid的数据进行绘制
|
} else {
|
_this.trackNow = [];
|
}
|
var isSos = _this.playMark[i][7];
|
|
if (_this.playMark[i][8] == "1") {
|
if (sousuoType) {
|
can.drawImage(images[_this.playMark[i][10]], 0, 0, images[key].naturalWidth, images[key].naturalHeight, x_cor_now - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2, y_cor_now - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]), images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key], images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]);
|
} else {
|
can.drawImage(sousuo0, 0, 0, images[key].naturalWidth, images[key].naturalHeight, x_cor_now - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2, y_cor_now - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]), images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key], images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]);
|
}
|
sousuoType = !sousuoType;
|
} else {
|
if (isSos) {
|
if (sosType[i]) {
|
can.drawImage(sos, 0, 0, images[key].naturalWidth, images[key].naturalHeight, x_cor_now - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2 + 3, y_cor_now - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]) + 2, images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key], images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]);
|
} else {
|
can.drawImage(sos1, 0, 0, images[key].naturalWidth, images[key].naturalHeight, x_cor_now - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2 + 3, y_cor_now - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]) + 2, images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key], images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]);
|
}
|
if (_this.playMark[i][11] == 0) {
|
can.strokeStyle = 'red';
|
} else {
|
can.strokeStyle = 'green';
|
}
|
can.lineWidth = 3;
|
BezierEllipse2(can,x_cor_now - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2+14,y_cor_now - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]) + 28,10,5)
|
sosType[i] = !sosType[i];
|
} else {
|
if (_this.playMark[i][11] == 0) {
|
can.strokeStyle = 'red';
|
} else {
|
can.strokeStyle = 'green';
|
}
|
can.lineWidth = 3;
|
BezierEllipse2(can,x_cor_now - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2+14,y_cor_now - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]) + 28,10,5)
|
can.drawImage(images[_this.playMark[i][10]], 0, 0, images[key].naturalWidth, images[key].naturalHeight, x_cor_now - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2, y_cor_now - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]), images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key], images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]);
|
}
|
}
|
|
//画在相应位置上
|
// can.drawImage(images[key], 0, 0, images[key].naturalWidth, images[key].naturalHeight, x_cor_now - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2, y_cor_now - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]), images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key], images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]);
|
|
if (_this.tagZb == '1') { //是否显示标签坐标
|
can.fillStyle = 'red';
|
//var f = 8*( _this.imgScaleList['map']);
|
can.font = "11px Arial";
|
|
tagzuobiao = _this.playMark[i][4] + ',' + _this.playMark[i][5];
|
lio = tagzuobiao.length / 2 * 6
|
can.fillText(tagzuobiao, x_cor_now - lio, y_cor_now + 15);
|
};
|
if (_this.viewName == '1') { //是否显示人员名称
|
can.fillStyle = 'white';
|
can.font = '13px sans-serif';
|
if (_this.viewTagid == '1') { //是否显示标签id
|
if (_this.playMark[i][2] <= 10) {
|
fillRoundRect(can, x_cor_now - 40, y_cor_now - 40 * _this.imgScaleList[key] * _this.rateNumList[key] - 18, 40 * 2, 20, 4, '#FF0000');
|
} else {
|
fillRoundRect(can, x_cor_now - 40, y_cor_now - 40 * _this.imgScaleList[key] * _this.rateNumList[key] - 18, 40 * 2, 20, 4, '#32CD32');
|
}
|
can.fillStyle = 'white';
|
can.fillText(_this.playMark[i][1], x_cor_now - 38, y_cor_now - 40 * _this.imgScaleList[key] * _this.rateNumList[key] - 3);
|
can.fillText(_this.playMark[i][0], x_cor_now + 5, y_cor_now - 40 * _this.imgScaleList[key] * _this.rateNumList[key] - 3);
|
} else {
|
if (_this.playMark[i][2] <= 10) {
|
fillRoundRect(can, x_cor_now - 20, y_cor_now - images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key] - 18, images[key].naturalHeight * 1.1, 20, 4, '#FF0000');
|
} else {
|
fillRoundRect(can, x_cor_now - 20, y_cor_now - images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key] - 18, images[key].naturalHeight * 1.1, 20, 4, '#32CD32');
|
}
|
can.fillStyle = 'white';
|
can.fillText(_this.playMark[i][1], x_cor_now - 19, y_cor_now - images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key] - 3);
|
}
|
} else {
|
can.font = '13px sans-serif';
|
can.fillStyle = 'white';
|
if (_this.viewTagid == '1') {
|
if (_this.playMark[i][2] <= 10) {
|
fillRoundRect(can, x_cor_now - 20, y_cor_now - images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key] - 18, images[key].naturalHeight * 1.1, 20, 4, '#FF0000');
|
} else {
|
fillRoundRect(can, x_cor_now - 20, y_cor_now - images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key] - 18, images[key].naturalHeight * 1.1, 20, 4, '#32CD32');
|
}
|
can.fillStyle = 'white';
|
can.fillText(_this.playMark[i][0], x_cor_now - 14, y_cor_now - images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key] - 3);
|
}
|
}
|
|
if (_this.viewPower == '1') { //是否显示电量
|
can.font = '10px sans-serif';
|
can.fillStyle = 'red';
|
can.fillText("电量:" + _this.playMark[i][2], x_cor_now - 16, y_cor_now + 20);
|
};
|
};
|
}
|
};
|
} else if (key == 'anchor_online') {
|
can.font = '10px sans-serif';
|
if (_this.anckicon == '1') { //是否显示基站图标
|
//_this.anchorList = [anchorid, posx,posy,posz,layer,greatetime]
|
for (var i = 0; i < _this.onlineAnchorList.length; i++) {
|
var cor_x = new Number(_this.onlineAnchorList[i][1]);
|
var cor_y = new Number(_this.onlineAnchorList[i][2]);
|
var x_cor = new Number(_this.imgXList['map'] + _this.imgScaleList['map'] * _this.rateNumList['map'] * _this.x_ratio * (cor_x - _this.x_x0));
|
var y_cor = new Number(_this.imgYList['map'] + _this.imgScaleList['map'] * _this.rateNumList['map'] * _this.y_ratio * (cor_y - _this.y_y0));
|
can.drawImage(images[key], 0, 0, images[key].naturalWidth, images[key].naturalHeight, x_cor - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2, y_cor - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]), images[key].naturalWidth, images[key].naturalHeight);
|
if (_this.viewAnckzb == '1') { //是否显示基站坐标
|
can.fillStyle = 'red'
|
var anchorzuobiao = _this.onlineAnchorList[i][1] + ',' + _this.onlineAnchorList[i][2] + ',' + _this.onlineAnchorList[i][3];
|
// can.fillText(anchorzuobiao, x_cor - 15, y_cor + 30);
|
can.fillText(anchorzuobiao, x_cor - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2, y_cor - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]) + 33);
|
};
|
if (_this.viewAnckid == '1') { //是否显示基站id
|
can.fillStyle = 'red';
|
var tigidd = _this.onlineAnchorList[i][0];
|
can.fillText(tigidd, x_cor - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2, y_cor - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]));
|
};
|
};
|
};
|
} else if (key == 'anchor_offline') {
|
can.font = '10px sans-serif';
|
if (_this.anckicon == '1') { //是否显示基站图标
|
//_this.anchorList = [anchorid, posx,posy,posz,layer,greatetime]
|
for (var i = 0; i < _this.offlineAnchorList.length; i++) {
|
var cor_x = new Number(_this.offlineAnchorList[i][1]);
|
var cor_y = new Number(_this.offlineAnchorList[i][2]);
|
var x_cor = new Number(_this.imgXList['map'] + _this.imgScaleList['map'] * _this.rateNumList['map'] * _this.x_ratio * (cor_x - _this.x_x0));
|
var y_cor = new Number(_this.imgYList['map'] + _this.imgScaleList['map'] * _this.rateNumList['map'] * _this.y_ratio * (cor_y - _this.y_y0));
|
can.drawImage(images[key], 0, 0, images[key].naturalWidth, images[key].naturalHeight, x_cor - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2, y_cor - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]), images[key].naturalWidth, images[key].naturalHeight);
|
if (_this.viewAnckzb == '1') { //是否显示基站坐标
|
can.fillStyle = 'red'
|
var anchorzuobiao = _this.offlineAnchorList[i][1] + ',' + _this.offlineAnchorList[i][2] + ',' + _this.offlineAnchorList[i][3];
|
// can.fillText(anchorzuobiao, x_cor - 15, y_cor + 30);
|
can.fillText(anchorzuobiao, x_cor - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2, y_cor - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]) + 33);
|
};
|
if (_this.viewAnckid == '1') { //是否显示基站id
|
can.fillStyle = 'red';
|
can.fillText(_this.offlineAnchorList[i][0], x_cor - (images[key].naturalWidth * _this.imgScaleList[key] * _this.rateNumList[key]) / 2, y_cor - (images[key].naturalHeight * _this.imgScaleList[key] * _this.rateNumList[key]));
|
};
|
};
|
};
|
}
|
};
|
// }
|
|
//开启隧道定位后,需要显示当前考勤区域内的总标签数量
|
if (_this.tunlDw == "1") {
|
var k = 0;
|
fillRoundRect(can, 10, 10, 140, 40 * _this.fenceMarkCount.length, 10, colorbbb);
|
for (var i = 0; i < _this.fenceMarkCount.length; i++) {
|
can.beginPath();
|
can.fillStyle = getDrawColor(_this.FenceColor[i]);
|
can.fillStyle = "rgba(255,255,0,0.7)";
|
can.font = "15px Verdana";
|
can.fillText(_this.realFenceList[i][0] + ":" + _this.fenceMarkCount[i], 34, 36 + 40 * k);
|
can.closePath();
|
k += 1;
|
};
|
};
|
|
//开启气体显示
|
if (_this.gas_show == "1") {
|
_this.GasList = getGas("zuobiao"); //气体坐标
|
_this.GasType = getGas("type"); //气体类型
|
_this.GasNongdu = getGas("nongdu"); //气体浓度
|
for (var i = 0; i < _this.GasList.length; i++) {
|
var cor_x = new Number(_this.GasList[i][0]);
|
var cor_y = new Number(_this.GasList[i][1]);
|
var x_cor = new Number(_this.imgXList['map'] + _this.imgScaleList['map'] * _this.rateNumList['map'] * _this.x_ratio * (cor_x - _this.x_x0));
|
var y_cor = new Number(_this.imgYList['map'] + _this.imgScaleList['map'] * _this.rateNumList['map'] * _this.y_ratio * (cor_y - _this.y_y0));
|
can.beginPath();
|
can.arc(x_cor, y_cor, 6, 0, Math.PI * 2, true);
|
can.fillStyle = "green";
|
can.fill();
|
can.fillStyle = "red";
|
can.fillText(_this.GasType[i], x_cor + 10, y_cor);
|
can.fillText(_this.GasNongdu[i], x_cor + 10, y_cor + 10);
|
can.closePath();
|
}
|
};
|
},
|
|
init: function (current_floor, tml, ydl, fzbl, fcl, fnl, ftl, ail_on, ail_off, sysSetting, ttm) {
|
var _this = this;
|
|
//读取系统设置
|
_this.tagZb = sysSetting[0].tagZb;//是否显示标签坐标
|
_this.diskaoqin = sysSetting[0].diskaoqing; //出考勤区域是否消失
|
_this.viewAnckid = sysSetting[0].viewAnckid;//是否显示基站ID
|
_this.viewName = sysSetting[0].viewName;//是否显示人员名称
|
_this.tunlDw = sysSetting[0].tunlDw;//隧道定位模式
|
_this.guiji_sava = sysSetting[0].guiji_sava;//是否开启轨迹保存
|
_this.viewPower = sysSetting[0].viewPower;//是否显示电量
|
_this.viewTagid = sysSetting[0].viewTagid;//是否显示标签ID
|
_this.viewAnckzb = sysSetting[0].viewAnckzb;//是否显示基站坐标
|
_this.offView = sysSetting[0].offView;//是否离线不显示图标
|
_this.anckicon = sysSetting[0].anckicon;//是否显示基站图标
|
_this.gas_show = sysSetting[0].gas_show;//显示其他检测(气体显示)
|
_this.quiet = sysSetting[0].quiet;//静止输出固定坐标
|
_this.fence_show = sysSetting[0].fence_show;//是否显示围栏
|
|
//读取真实地图
|
//读图片实际尺寸
|
_this.trueLength = new Number(tml[0][0]);
|
_this.trueWidth = new Number(tml[0][1]);
|
|
//读实际原点坐标
|
_this.x_x0 = new Number(ydl[0][0]);
|
_this.y_y0 = new Number(ydl[0][1]);
|
|
//读取当前围栏信息
|
_this.FenceList = fzbl;
|
_this.FenceColor = fcl;
|
_this.FenceName = fnl;
|
_this.FenceType = ftl;
|
|
_this.realFenceList = [];
|
//遍历围栏信息并存储成[名称,类型,坐标]
|
for (var m = 0; m < _this.FenceList.length; m++) {
|
var tmp_list = [];
|
var points = _this.FenceList[m];
|
var points_list = _this.FenceList[m].split(",");
|
|
//围栏实际坐标(加上偏移量的)
|
var points_list_sort = [];
|
for (var i = 0; i < points_list.length; i++) {
|
if (i % 2 == 0) {
|
tmp_list = [];
|
tmp_list.push(new Number(points_list[i]));
|
} else {
|
tmp_list.push(new Number(points_list[i]));
|
points_list_sort.push(tmp_list);
|
}
|
}
|
//存区域名称+区域类型+区域坐标,方便后续判断是否在某区域内
|
_this.realFenceList.push([_this.FenceName[m], _this.FenceType[m], points_list_sort]);
|
};
|
|
_this.real_trak_time = str_to_time(sysSetting[0].real_trak_time);//实时轨迹显示时长
|
//当前位置
|
_this.playMark = getRealPosition(current_floor);
|
_this.playAchor = getAnchorInfo_all()[0];
|
_this.playAchorli = getAnchorInfo_all()[1];
|
var tagid_str = "";
|
for (var i = 0; i < _this.playMark.length; i++) {
|
tagid_str += _this.playMark[i][0]
|
if (i != _this.playMark.length - 1) {
|
tagid_str += ","
|
}
|
}
|
//实时轨迹
|
if (_this.real_trak_time != 0) {
|
_this.trackNow = getTracknow(current_floor, tagid_str, _this.real_trak_time);
|
} else {
|
_this.trackNow = null;
|
}
|
|
_this.real_trak_color = getTrackColor(sysSetting[0].real_trak_color);//实时轨迹显示的颜色
|
|
_this.canvas.onmousedown = function (event) {
|
_this.clickDown(event);
|
};
|
_this.canvas.onmousemove = function (event) {
|
_this.mouseMove(event)
|
};
|
_this.canvas.onmouseup = function (event) {
|
_this.mouseUp(event);
|
};
|
_this.canvas.onmousewheel = function (event) {
|
_this.onmouseWheel(event);
|
};
|
_this.ttm = ttm;
|
|
//当前地图大于1个时才可以调用dbclick
|
if (_this.ttm > 1) {
|
_this.canvas.ondblclick = function (event) {
|
_this.doubleClick(event);
|
}
|
}
|
|
_this.onlineAnchorList = ail_on;
|
//console.log(ail_on);
|
_this.offlineAnchorList = ail_off;
|
|
var t = 300;//300ms
|
|
// function fn(){
|
// //当前需要画的坐标
|
// var realposition_list = getRealPosition_all()
|
// _this.playMark = realposition_list[current_floor];
|
// _this.drawImg(current_floor);
|
// }
|
function fn() {
|
if (tuodong == true) {
|
return false;
|
}
|
//当前实时坐标
|
_this.playMark = getRealPosition(current_floor);
|
// var onachor = getAnchorInfo_all()[0][current_floor];
|
// var offachor = getAnchorInfo_all()[1][current_floor];
|
// if (onachor) {
|
// _this.onlineAnchorList = onachor;
|
// } else {
|
// _this.onlineAnchorList = [];
|
// }
|
// if (offachor) {
|
// _this.offlineAnchorList = offachor;
|
// } else {
|
// _this.offlineAnchorList = [];
|
// }
|
// var tagid_str = "";
|
// for (var i=0;i<_this.playMark.length;i++){
|
// tagid_str += _this.playMark[i][0]
|
// if (i!= _this.playMark.length-1){
|
// tagid_str += ","
|
// }
|
// }
|
|
if (_this.real_trak_time != 0) {
|
//将当前实时坐标添加进track中
|
var track_now = Date.parse(new Date()); //timestamp为毫秒单位
|
track_now = track_now / 1000;
|
var track_now_head = track_now - _this.real_trak_time;
|
//当前track最开始的时间
|
var track_head_date = new Date();
|
track_head_date.setTime(track_now_head * 1000 + 8 * 3600 * 1000);
|
var track_head_date_str = track_head_date.toJSON().substr(0, 19).replace('T', ' ');
|
|
for (var i = 0; i < _this.playMark.length; i++) {
|
if (_this.trackNow[_this.playMark[i][0]] != null) {
|
if (_this.trackNow[_this.playMark[i][0]].length > 1500) {
|
_this.trackNow[_this.playMark[i][0]] = _this.trackNow[_this.playMark[i][0]].slice(-1200);
|
};
|
for (var j = 0; j < _this.trackNow[_this.playMark[i][0]].length; j++) {
|
if (_this.trackNow[_this.playMark[i][0]][0][2] < track_head_date_str) {
|
_this.trackNow[_this.playMark[i][0]].shift()
|
} else {
|
break
|
}
|
};
|
};
|
var now_time = new Date();
|
now_time.setTime(track_now * 1000 + 8 * 3600 * 1000);
|
var now_time_str = now_time.toJSON().substr(0, 19).replace('T', ' ');
|
var tmp = [_this.playMark[i][4], _this.playMark[i][5], now_time_str];
|
if (_this.trackNow[_this.playMark[i][0]] == null) {
|
_this.trackNow[_this.playMark[i][0]] = []
|
}
|
_this.trackNow[_this.playMark[i][0]].push(tmp)
|
}
|
}
|
_this.drawImg(current_floor);
|
}
|
// if (full_screen==true){
|
// clearInterval(timer);
|
// timer_screen= setInterval(fn, t);
|
// } else {
|
// clearInterval(timer_screen);
|
// timer = setInterval(fn, t);
|
// }
|
// var mapa0 = document.getElementById("wrap0")
|
// mapa0.value = "正在加载地图......"
|
// var mapa0 = document.getElementById("wrap0")
|
// var tt = document.createElement("p");
|
// tt.value="正在加载地图......"
|
// tt.style=""
|
// mapa0.appendChild(tt)
|
setTimeout(fnnn, 3000)
|
function fnnn() {
|
_this.timer = setInterval(fn, t);
|
timer_list.push(_this.timer);
|
|
}
|
|
// _this.timer = setInterval(fn, t);
|
},
|
/*计算当前鼠标位置距离canvas的偏移量*/
|
xyToCanvas: function (ele, x, y) {
|
var _this = this;
|
var obj = _this.canvas.getBoundingClientRect();
|
return {
|
x: x - obj.left,
|
y: y - obj.top
|
};
|
},
|
/*鼠标双击事件*/
|
doubleClick: function (event) {
|
var _this = this;
|
|
if ((event.type == "dblclick") && (full_screen == false)) {
|
_this.expand = true;
|
full_screen = true;
|
|
tubiaochicun = 0.015;
|
// zuobiaochicun = 35;
|
// dianliangchicun = 17;
|
var targ = event.target;
|
var tid = targ.id;
|
var id = tid.substr(tid.length - 1, 1)
|
var str = "map" + id;
|
document.getElementById(str).style.width = "100%";
|
document.getElementById(str).style.height = "800px";
|
var str = "draw" + id;
|
document.getElementById(str).style.width = "100%";
|
document.getElementById(str).style.height = "750px";
|
var str = "wrap" + id;
|
document.getElementById(str).style.width = "100%";
|
document.getElementById(str).style.height = "750px";
|
for (var i = 0; i < 4; i++) {
|
if (String(i) != id) {
|
var str = "map" + i;
|
// document.getElementById(str).style.position = "fixed";
|
// document.getElementById(str).style.left = "100%";
|
document.getElementById(str).style.display = "none";
|
}
|
};
|
//_this.drawImg(current_floor);
|
clearInterval(_this.timer);
|
var can = _this.context;
|
can.clearRect(0, 0, _this.canvas.width, _this.canvas.height);
|
for (var i = 0; i < timer_list.length; i++) {
|
clearInterval(timer_list[i]);
|
}
|
timer_list = [];
|
//console.log(result)
|
diaoyonghuatu(result);
|
} else if ((event.type == "dblclick") && (full_screen == true)) {
|
_this.expand = false;
|
full_screen = false;
|
|
tubiaochicun = 0.03;
|
// zuobiaochicun = 30;
|
// dianliangchicun = 15;
|
var targ = event.target;
|
var tid = targ.id;
|
var id = tid.substr(tid.length - 1, 1)
|
var str = "map" + id;
|
document.getElementById(str).style.width = "49.5%";
|
document.getElementById(str).style.height = null;
|
var str = "draw" + id;
|
document.getElementById(str).style.width = null;
|
document.getElementById(str).style.height = null;
|
var str = "wrap" + id;
|
document.getElementById(str).style.width = "100%";
|
document.getElementById(str).style.height = "400px";
|
|
for (var i = 0; i < _this.ttm; i++) {
|
var str = "map" + i;
|
document.getElementById(str).style.display = "";
|
};
|
//_this.drawImg(current_floor);
|
clearInterval(_this.timer);
|
var can = _this.context;
|
can.clearRect(0, 0, _this.canvas.width, _this.canvas.height);
|
for (var i = 0; i < timer_list.length; i++) {
|
clearInterval(timer_list[i]);
|
}
|
timer_list = [];
|
diaoyonghuatu(result);
|
}
|
},
|
/*鼠标单击事件*/
|
clickDown: function (event) {
|
var _this = this;
|
if ((event.button == 0)) {//点击鼠标左键
|
_this.dragFlag = true;
|
tuodong = true;
|
//_this.canvas.style.cursor = "move";
|
_this.pos = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY);
|
}
|
},
|
/*鼠标移动事件*/
|
mouseMove: function (event) {
|
var _this = this;
|
/*拖拽*/
|
if (_this.dragFlag) {
|
tuodong = true;
|
_this.canvas.style.cursor = "move";
|
var pos1 = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY);
|
var x = pos1.x - _this.pos.x;
|
var y = pos1.y - _this.pos.y;
|
_this.pos = pos1;
|
for (var key in _this.imgXList) {
|
_this.imgXList[key] += x;
|
_this.imgYList[key] += y;
|
}
|
//clearInterval(_this.timer);
|
_this.cacheCanvas = null;
|
_this.drawImg();
|
}
|
//diaoyonghuatu(result);
|
},
|
/*鼠标放开事件*/
|
mouseUp: function (event) {
|
var _this = this;
|
_this.dragFlag = false;
|
tuodong = false;
|
if (_this.markFlag) {
|
_this.canvas.style.cursor = "none";
|
return;
|
}
|
_this.canvas.style.cursor = 'default';
|
|
},
|
/*鼠标滚轮事件*/
|
onmouseWheel: function (event) {
|
var _this = this;
|
_this.cacheCanvas = null;
|
var pos = _this.xyToCanvas(_this.canvas, event.clientX, event.clientY);
|
event.wheelDelta = event.wheelDelta ? event.wheelDelta : (event.deltaY * (-40));
|
//取消浏览器默认行为
|
if (event.preventDefault) {
|
event.preventDefault();
|
} else {
|
event.returnValue = false;
|
}
|
if (event.wheelDelta > 0 && _this.scaleFlag < 9) {
|
for (var key in _this.imgScaleList) {
|
_this.imgScaleList[key] *= 1.25;
|
_this.imgXList[key] = _this.imgXList[key] * 1.25 - 0.25 * pos.x;
|
_this.imgYList[key] = _this.imgYList[key] * 1.25 - 0.25 * pos.y;
|
}
|
_this.scaleFlag += 1;
|
}
|
if (event.wheelDelta < 0 && _this.scaleFlag > -9) {//缩小
|
for (var key in _this.imgScaleList) {
|
_this.imgScaleList[key] *= 0.8;
|
_this.imgXList[key] = _this.imgXList[key] * 0.8 + pos.x * 0.2;
|
_this.imgYList[key] = _this.imgYList[key] * 0.8 + pos.y * 0.2;
|
}
|
_this.scaleFlag -= 1;
|
}
|
_this.imgScaleList['icon'] = tubiaochicun;
|
_this.drawImg();
|
},
|
};
|
|
function getRealPosition_all() {
|
var realposition = [];
|
$.ajax({
|
async: false,
|
type: 'POST',
|
url: "/hxzkoa/getRealPosition_all.do",
|
dataType: 'json',
|
success: function (data) {
|
for (var i = 0; i < data.length; i++) {
|
//playMark[id,name,power,life,x,y,time]
|
realposition.push([data[i].tagid, data[i].name, data[i].power, data[i].life, data[i].posx, data[i].posy, data[i].time, data[i].fence == 1 || data[i].sos == 1, data[i].sos, data[i].fence])
|
}
|
},
|
});
|
return realposition
|
};
|
var audio1 = new Audio("/hxzkoa/hxzk/image/voice/sos.wav");
|
var audio2 = new Audio("/hxzkoa/hxzk/image/voice/warning.wav");
|
// var zaipan = []
|
// var sosgaojing1 = getRealPosition();
|
// for (var i = 0; i < sosgaojing1.length; i++) {
|
// zaipan.push(false)
|
// }
|
// setInterval(baojing, 1000)
|
function baojing() {
|
var sosgaojing = getRealPosition_all();
|
for (var i = 0; i < sosgaojing.length; i++) {
|
if (sosgaojing[i][7] == 1) {
|
if (sosgaojing[i][8] == 1) {
|
var str = '注意,编号[' + sosgaojing[i][0] + ']SOS告警'
|
audio1.play()
|
} if (sosgaojing[i][9] == 1) {
|
var str = '注意,编号[' + sosgaojing[i][0] + ']进入危险区域'
|
audio2.play()
|
}
|
}
|
}
|
}
|
|
document.getElementById("stop").style.display = 'none';
|
$("#search").click(function () {
|
var input = document.getElementById("tagidaaa").value;
|
// $.ajax({
|
// async: false,
|
// url: "/hxzkoa/sousuo.do",
|
// type: "POST",
|
// dataType: "JSON",
|
// data: {
|
// tagid: input
|
// }
|
// })
|
sousuopanduan = input;
|
document.getElementById("search").style.display = 'none';
|
document.getElementById("stop").style.display = '';
|
});
|
$("#stop").click(function () {
|
// $.ajax({
|
// async: false,
|
// url: "/hxzkoa/sousuoquxiao.do",
|
// type: "POST",
|
// dataType: "JSON"
|
// })
|
sousuopanduan = "";
|
document.getElementById("search").style.display = '';
|
document.getElementById("stop").style.display = 'none';
|
document.getElementById("tagidaaa").value = "";
|
});
|
</script>
|
<!-- 结束调用室内定位地图功能 -->
|
<!-- > END PAGE FUNCTION SCRIPTS -->
|
|
|
|
<!-- BEGIN PAGE LEVEL PLUGINS/CUSTOM SCRIPTS -->
|
<script src="/hxzkoa/hxzk/plugins/apex/apexcharts.min.js"></script>
|
<script src="/hxzkoa/hxzk/assets/js/dashboard/dash_2.js"></script>
|
<!-- BEGIN PAGE LEVEL PLUGINS/CUSTOM SCRIPTS -->
|
|
</body>
|
|
</html>
|