GZMachinesWeb/.svn/pristine/42/425ed5cdf21c30c94a211556e55...

597 lines
16 KiB
Plaintext
Raw Normal View History

2025-06-20 17:47:53 +08:00
var map;
var polygon2;
var point2s = [];
var drawingOverlay;
var levels ="";
var parentIds ="";
$(function() {
var bdmapcfg = {
'imgext': '.png', // 与瓦片文件后缀一致
'tiles_dir': '/opt/gzImw/web_tomcat/local_map/14/' // 本地瓦片根目录
}; // :ml-citation{ref="2,6" data="citationList"}
// 初始化树
getOrgTreeData("");
initMap(); // 加载地图
});
function initMap() {
creatMap();
madeBoundary(); // 加载区域图
}
function creatMap(){
map = new BMap.Map('map');
//var poi = new BMap.Point(117.542207,33.133388);
var poi = new BMap.Point(106.852748,26.647899);
map.centerAndZoom(poi, 14);
map.enableScrollWheelZoom();
var styleOptions = {
strokeColor: "red", //边线颜色。
fillColor: "red", //填充颜色。当参数为空时,圆形将没有填充效果。
strokeWeight: 3, //边线的宽度,以像素为单位。
strokeOpacity: 0.8, //边线透明度取值范围0 - 1。
fillOpacity: 0.6, //填充的透明度取值范围0 - 1。
strokeStyle: 'solid' //边线的样式solid或dashed。
}
//实例化鼠标绘制工具
var drawingManager = new BMapLib.DrawingManager(map, {
isOpen: false, //是否开启绘制模式
enableDrawingTool: true, //是否显示工具栏
drawingToolOptions: {
anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
offset: new BMap.Size(5, 5), //偏离值
drawingModes : [BMAP_DRAWING_POLYLINE],
scale: 0.8 //工具栏缩放比例
},
circleOptions: styleOptions, //圆的样式
polylineOptions: styleOptions, //线的样式
polygonOptions: styleOptions, //多边形的样式
rectangleOptions: styleOptions //矩形的样式
});
findDevPos(""); //查询设备定位信息
findFencePoints(); //查询围栏区域信息
//添加鼠标绘制工具监听事件,用于获取绘制结果
drawingManager.addEventListener('overlaycomplete', overlaycomplete);
map.addControl(new BMap.NavigationControl()); // 添加平移缩放控件
map.enableScrollWheelZoom(); //启用滚轮放大缩小
}
// 设置区域图start
function madeBoundary() {
var datas = new Array("贵州-");
var bdary = new BMap.Boundary();
for (var i = 0; i < datas.length; i++) {
getBoundary(datas[i], bdary);
}
}
function getBoundary(data, bdary) {
data = data.split("-");
bdary.get(data[0], function(rs) { // 获取行政区域
var count = rs.boundaries.length; // 行政区域的点有多少个
var pointArray = [];
for (var i = 0; i < count; i++) {
var ply = new BMap.Polygon(rs.boundaries[i], {
strokeWeight : 3,
strokeColor : "#00D8FF", //#024E41 国网绿
fillOpacity : 0,
fillColor : "rgba(0, 0, 0, 0)"
}); // 建立多边形覆盖物
map.addOverlay(ply); // 添加覆盖物
ply.disableMassClear(); // 此设置不会被移除
}
});
}
// 设置区域图end
function findDevPos(name){
var index=name.indexOf("[");
if(index>-1){
name=name.substring(0,index);
}
var pts = [];
var ptsInfo = [];
$.ajax({
type : "post",
url : bonuspath + "/backstage/position/findBindPosition",
data : {
keyWord:name,
deviceType:"1"
},
dataType : "json",
success : function(data) {
var result = data.obj;
console.log("result",result);
if (result != null && result != '') {
for (var i = 0; i < result.length; i++) {
var lat = result[i].lat;
var lon = result[i].lon;
var id = result[i].id;
var jNum = result[i].jNum;
var sNum = result[i].sNum;
var site = addressF(lon, lat);
addressF(lon, lat,id,jNum,sNum,result[i]);
}
}
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
}
});
}
function addressF(lon, lat,id,jNum,sNum,dev){
// 创建地理编码(地理解析器)实例
var myGeo = new BMap.Geocoder();
// 根据坐标得到地址描述 下面输入坐标。
myGeo.getLocation(new BMap.Point(lon, lat), function (result) {
if (result) {
var addComp = result.address;
var site = addComp ;
map.addOverlay(createMarker(id,lon, lat, dev,jNum,sNum,site));
}
});
}
//创建地图覆盖物start
function createMarker(id,lon, lat, dev,jNum,sNum,site) { // 创建地图覆盖物
var pt = new BMap.Point(lon, lat);
var cent = "";
var myIcon = getIcon(dev);
var marker = new BMap.Marker(pt, {
icon : myIcon
});
cent += "<div style='width: 100%;float: left;'>";
cent += "<span style='color:#ffffff;font-size:16px;'>GPS编号<strong>"
+ JY.Object.notEmpty(dev.code) + "</strong></span><br />";
cent += "<span style='color:#ffffff;font-size:16px;'>设备编号:<strong>"
+ JY.Object.notEmpty(dev.deviceCode) + "</strong></span><br />";
cent += "<span style='color:#ffffff;font-size:16px;'>设备电量: "
+ JY.Object.notEmpty(dev.electQuantity) + "%" + "</span><br />";
cent += "<span style='color:#ffffff;font-size:16px;'>经度: "
+ JY.Object.notEmpty(dev.lon) + "</span><br />";
cent += "<span style='color:#ffffff;font-size:16px;'>纬度: "
+ JY.Object.notEmpty(dev.lat) + "</span><br />";
cent += "<span style='color:#ffffff;font-size:16px;'>上传时间: "
+ JY.Object.notEmpty(dev.upTime) + "</span><br />";
cent += "<span style='color:#ffffff;font-size:16px;'>设备类型: " + JY.Object.notEmpty(dev.typeName) + "</span><br />";
var posTypeInfo = dev.posType;
if(posTypeInfo =="LBS" || posTypeInfo =="lbs"){
posTypeInfo = "基站定位";
}
if(posTypeInfo =="GPS" || posTypeInfo =="gps"){
posTypeInfo = "卫星定位";
}
if(posTypeInfo =="WIFI" || posTypeInfo =="wifi"){
posTypeInfo = "WIFI定位";
}
if(posTypeInfo =="BEACON" || posTypeInfo =="beacon"){
posTypeInfo = "蓝牙定位";
}
cent += "<span style='color:#ffffff;font-size:16px;'>定位类型: "
+ posTypeInfo + "</span><br />";
cent += "<span style='color:#ffffff;font-size:16px;'>所属围栏:暂无</span><br />";
cent += "<span style='color:#ffffff;font-size:16px;'>当前项目所在工程: "
+ JY.Object.notEmpty(dev.proName) + "</span><br />";
cent += "<span style='color:#ffffff;font-size:16px;'>领用单位: "
+ JY.Object.notEmpty(dev.useUnit) + "</span><br />";
/*cent +="<span>"+'历史定位:'+"</span>"+"<span style='color:#ffffff;font-size:16px;' onclick='gpsView("+ dev.code+","+dev.deviceCode+","+dev.typeName+")'>定位查看</span><br />";*/
cent +="<span style='color:#ffffff;font-size:16px;'>"+'历史定位:'+"</span>"+"<img src = '../../static/img/gps.png' width='26px' height='26px' onclick='gpsView(\""+JY.Object.notEmpty(dev.code)+"\")' /><br />";
cent += "<span style='color:#ffffff;font-size:16px;'>地址: "
+ JY.Object.notEmpty(site) + "</span><br />";
cent += "</div>";
addClickHandler(cent, marker);
return marker;
}
//历史定位数据查看
function gpsView(code){
localStorage.setItem("code",code);
layer.open({
type : 2,
title : ['历史定位', 'background-color: #27A3D9;color:#fff' ],
shadeClose : true,
shade : false,
maxmin : true,
area : [ '90%', '85%' ],
content :bonuspath+'/backstage/position/historyGps'
});
}
//点击重叠数字,弹窗展示设备信息明细
function findDeviceDetail(id,type){
localStorage.setItem("id",id);
localStorage.setItem("type",type);
layer.open({
type : 2,
title : ['设备明细', 'background-color: #27A3D9;color:#fff' ],
shadeClose : true,
shade : false,
maxmin : true,
area : [ '1100px', '600px' ],
content :bonuspath+'/backstage/index/map'
});
}
//覆盖物点击事件start--机具
function addClickHandler(content, marker) {
marker.addEventListener("onmouseover", function(e) {
openDevInfo(content, e);
});
}
// 覆盖物点击事件end
//创建信息窗口对象 start
function openDevInfo(content, e) { // 弹出窗口信息
var p = e.target;
var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
var infoWindow = new BMap.InfoWindow(content, manageopts); // 创建信息窗口对象
map.openInfoWindow(infoWindow, point); // 开启信息窗口
// $("..BMap_pop div:nth-child(8) img")
// .attr('src', "./libs/images/device.png");
}
// 创建信息窗口对象 end
//回调获得覆盖物信息
function overlaycomplete(e) {
map.removeOverlay(drawingOverlay);
drawingOverlay = e.overlay;
map.addOverlay(drawingOverlay);
var points = new Array();
var arrps = new Array();
var p=e.overlay.getPath();
for(var j = 0; j < p.length; j++){
var grid =p[j];
var point = new BMap.Point(grid.lng,grid.lat);
var obj={};
obj.lon=grid.lng;
obj.lat=grid.lat;
points.push(point);
arrps.push(obj);
}
console.log("arrpss:",arrps);
polygon2 = new BMap.Polygon(points,{strokeColor:"#f50704",fillColor:"#cfcfcf", strokeWeight:5, strokeOpacity:0,fillOpacity:0,});
map.addOverlay(polygon2);
console.log(points);
addFence(arrps);
};
//围栏坐标存入数据库
function addFence(arrps){
layer.prompt({title: '请输入围栏名称', formType: 2}, function(text, index){
layer.close(index);
$.ajax({
type : "post",
url : bonuspath + "/backstage/fence/insert",
data : {
points:JSON.stringify(arrps),
name:text
},
dataType : "json",
success : function(data) {
layer.msg(data.resMsg);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
}
});
});
}
//查询围栏坐标点信息
function findFencePoints(){
$.ajax({
type : "post",
url : bonuspath + "/backstage/fence/findNoPage",
data : {
isActive : 1
},
dataType : "json",
success : function(data) {
// alert("data="+JSON.stringify(data))
var res = data.obj.list;
var points;
for(var i=0;i<res.length;i++){
points = res[i].points;
var json=JSON.parse(points);
var pointarray=new Array();
for(var j=0;j<json.length;j++){
var obj=json[j];
var lon=obj.lon;
var lat=obj.lat;
var point = new BMap.Point(lon,lat);
pointarray.push(point);
}
polygon2 = new BMap.Polygon(pointarray,{strokeColor:"#f50704",fillColor:"#cfcfcf", strokeWeight:5, strokeOpacity:0,fillOpacity:0,});
map.addOverlay(polygon2);
}
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
}
});
}
//根据状态设置图标 start
function getIcon(dev) {
var status = dev.status;
var alarmType = dev.alarmType;
var typeName = dev.typeName;
// alert(dev.deviceCode+typeName+",状态="+status+",告警="+alarmType);
var url;
if(status == '5'){
url = "../../libs/images/inLibj.png";
}else{
url = "../../libs/images/isUsej.png";
}
var icon = new BMap.Icon(url, new BMap.Size(35,35));
return icon;
}
/*function getIcon(dev) {
var status = dev.status;
var alarmType = dev.alarmType;
var typeName = dev.typeName;
// alert(dev.deviceCode+typeName+",状态="+status+",告警="+alarmType);
var url;
if(typeName == "机动绞磨"){
if(alarmType == '1'){
url = "./libs/images/warningj.png";
}else if(alarmType == '2'){
url = "./libs/images/isNoticej.png";
}else if(alarmType == '3'){
url = "./libs/images/isNoticej.png";
}else{
if(status == '1'){
url = "./libs/images/inLibj.png";
}else{
url = "./libs/images/isUsej.png";
}
}
}else if(typeName == "手扶机绞磨"){
if(alarmType == '1'){
url = "./libs/images/warnings.png";
}else if(alarmType == '2'){
url = "./libs/images/isNotices.png";
}else if(alarmType == '3'){
url = "./libs/images/isNotices.png";
}else{
if(status == '1'){
url = "./libs/images/inLibs.png";
}else{
url = "./libs/images/isUses.png";
}
}
}
var icon = new BMap.Icon(url, new BMap.Size(35,35));
return icon;
}*/
// 根据状态设置图标 end
//管理人员信息窗口start
var manageopts = {
width : 360, // 信息窗口宽度
height : 320, // 信息窗口高度
enableMessage : true
};
// 管理人员信息窗口end
// 获取当前时间start
function getNowFormatDate() {
var date = new Date();
var seperator = "-";
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = date.getFullYear() + seperator + month + seperator
+ strDate;
return currentdate;
}
//判断坐标点是否在围栏区域内
function isArea(lon,lat,points){
var info;
var devPoint = new BMap.Point(lon, lat);
var json=JSON.parse(points);
var pointarray=new Array();
for(var j=0;j<json.length;j++){
var obj=json[j];
var lons=obj.lon;
var lats=obj.lat;
var point = new BMap.Point(lons,lats);
pointarray.push(point);
}
var fence = new BMap.Polygon(pointarray);
if(BMapLib.GeoUtils.isPointInPolygon(devPoint,fence)){
info = "设备在区域内";
}else {
info = "设备不在区域内";
}
return info;
}
// 定义树节点初始数据
var zNodes1 = [
{ "id":0, "pId":-1,open:true,"name":"GPS设备",icon:bonuspath + "/static/css/sys/images/home.gif"},
];
// 树的设置
var setting1 = {
check : {
enable : false,
chkboxType : {
"Y" : "ps",
"N" : "ps"
}
},
async : {
enable : true,
},
data : {
simpleData : {
enable : true,
idKey : "id",
pIdKey : "pId",
rootPId : 0
}
},
callback : {
onClick: onTreeClick,
//点击前
beforeClick:beforeClick,
// 不允许拖拽
beforeDrag : beforeDrag
}
};
function beforeClick(treeId, treeNode){
if(treeNode.id == 0){
return false;
}
return true;
}
// 不允许拖拽
function beforeDrag(treeId, treeNodes) {
return false;
}
// 获取数据初始化树
function getOrgTreeData(keyWord) {
$.ajax({
type : 'POST',
url : bonuspath + '/backstage/position/getMainTree',
data : {
keyWord:keyWord
},
success : function(result) {
var nodes = zNodes1.concat(result.obj.list);
console.info(nodes);
$.fn.zTree.init($("#modeInfoTree"), setting1, nodes);
},
error : function(e) {
JY.Model.info(e.resMsg);
},
dataType : 'json'
});
}
function refreshTree(){
getOrgTreeData("");
}
// 获取树对象
function getTree() {
return $.fn.zTree.getZTreeObj("modeInfoTree");
}
function onTreeClick(event, treeId, treeNode, clickFlag){
console.info("name"+treeNode.name+",id:"+treeNode.id+",level:"+treeNode.LEVEL);
remove_overlay(); // 移除覆盖物
findDevPos(treeNode.name);
}
//清除地图覆盖物
function remove_overlay() {
map.clearOverlays();
}
function search(){
getbaseList();
}
function query(){
var ztreeObj = $.fn.zTree.getZTreeObj("modeInfoTree");
var keyword=$("#keyWord").val();
searchZtree(ztreeObj,keyword);
}
function reset(){
$("#keyWord").val("");
getOrgTreeData("");
}
function searchZtree(ztreeObj,ztreeInput){
//ztree查询
function filterFunc(node){
var keyword=ztreeInput;
//如果当前结点,或者其父结点可以找到,或者当前结点的子结点可以找到,则该结点不隐藏
if(searchParent(keyword,node) || searchChildren(keyword,node.children)){
return false;
}
return true;
};
//获取不符合条件的叶子结点
var hiddenNodes=ztreeObj.getNodesByFilter(filterFunc);
//隐藏不符合条件的叶子结点
ztreeObj.hideNodes(hiddenNodes);
}
/**
* 查找子结点如果找到返回true否则返回false-----ztree查询时使用
*/
function searchChildren(keyword,children){
if(children == null || children.length == 0){
return false;
}
for(var i = 0;i < children.length;i++){
var node = children[i];
if(node.name.indexOf(keyword)!=-1){
return true;
}
//递归查找子结点
var result = searchChildren(keyword,node.children);
if(result){
return true;
}
}
return false;
}
/**
* 查找当前结点和父结点如果找到返回ture否则返回false
*/
function searchParent(keyword,node){
if(node == null){
return false;
}
if(node.name.indexOf(keyword)!=-1){
return true;
}
//递归查找父结点
return searchParent(keyword,node.getParentNode());
}