var map var floores; // mars3d.Map三维地图对象 var graphicLayerAnchor; //基站 var graphicLayerGetWay; //基站 var graphicLayer; var graphicLayerCamera; // 矢量图层对象 var graphicLayerFence; // 矢量图层对象 $.ajaxSetup({ headers: { 'x-access-token': localStorage.getItem("hxzkmars3d") } }); var mapSplit //双屏对比 var mapSplit1 var NameTitle var creditHtml = '' var terrainClip var detail;//详细信息 var Disappear;//离线消失 var voice;//开启语音 var showfence;//显示围栏 var showanchor;//显示基站 var showgetway;//显示网关 var noterrain; //无地形 var basemap; //无底图 var sudu; function initMap() { let HomeSetting; let mapPosition; $.ajax({ url: "/hxzkuwb/MarsHome", type: "POST", headers: { 'x-access-token': localStorage.getItem("hxzkmars3d") }, async: false, // 设置为同步请求 success: function(data) { HomeSetting = data mapPosition = HomeSetting.mapposition.split(','); Disappear = HomeSetting.offlinehide; NameTitle = HomeSetting.detail detail = HomeSetting.detail showfence = HomeSetting.showfence showanchor = HomeSetting.showanchor showgetway = HomeSetting.showgateway voice = HomeSetting.voice sudu = HomeSetting.sudu }, error: function(xhr, status, error) { layer.msg("初始化失败:", error); } }); map = new mars3d.Map('mars3dContainer', { scene: { center: { lat: mapPosition[1], lng: mapPosition[0], alt: HomeSetting.alt, heading: HomeSetting.heading, pitch: HomeSetting.pitch }, showSkyAtmosphere: false, // 关闭球周边的白色轮廓 map.scene.skyAtmosphere = false fog: true, fxaa: true, globe: { showGroundAtmosphere: false, // 关闭大气(球表面白蒙蒙的效果) depthTestAgainstTerrain: false, baseColor: "#546a53" }, // terrain: { // url: "http://data.mars3d.cn/terrain", // show: true // }, cameraController: { zoomFactor: 3.0, minimumZoomDistance: 1, maximumZoomDistance: 50000000, enableRotate: true, enableZoom: true }, mapProjection: mars3d.CRS.EPSG3857, // 2D下展示墨卡托投影 mapMode2D: Cesium.MapMode2D.INFINITE_SCROLL,// 2D下左右一直可以滚动重复世界地图 skyBox: { sources: { positiveX: "/hxzkuwb/view/Home/img/skybox_near/qingtian/rightav9.jpg", negativeX: "/hxzkuwb/view/Home/img/skybox_near/qingtian/leftav9.jpg", positiveY: "/hxzkuwb/view/Home/img/skybox_near/qingtian/frontav9.jpg", negativeY: "/hxzkuwb/view/Home/img/skybox_near/qingtian/backav9.jpg", positiveZ: "/hxzkuwb/view/Home/img/skybox_near/qingtian/topav9.jpg", negativeZ: "/hxzkuwb/view/Home/img/skybox_near/qingtian/bottomav9.jpg" }, sources2: { positiveX: "/hxzkuwb/view/Home/img/skybox_near/wanxia/SunSetRight.png", negativeX: "/hxzkuwb/view/Home/img/skybox_near/wanxia/SunSetLeft.png", positiveY: "/hxzkuwb/view/Home/img/skybox_near/wanxia/SunSetFront.png", negativeY: "/hxzkuwb/view/Home/img/skybox_near/wanxia/SunSetBack.png", positiveZ: "/hxzkuwb/view/Home/img/skybox_near/wanxia/SunSetUp.png", negativeZ: "/hxzkuwb/view/Home/img/skybox_near/wanxia/SunSetDown.png" }, sources3: { negativeX: "/hxzkuwb/view/Home/img/skybox/2/tycho2t3_80_mx.jpg", negativeY: "/hxzkuwb/view/Home/img/skybox/2/tycho2t3_80_my.jpg", negativeZ: "/hxzkuwb/view/Home/img/skybox/2/tycho2t3_80_mz.jpg", positiveX: "/hxzkuwb/view/Home/img/skybox/2/tycho2t3_80_px.jpg", positiveY: "/hxzkuwb/view/Home/img/skybox/2/tycho2t3_80_py.jpg", positiveZ: "/hxzkuwb/view/Home/img/skybox/2/tycho2t3_80_pz.jpg" } } }, // terrain: { // url: "/hxzkuwb/view/Home/demo/titles/terrain/", // show: true // }, control: { mouseDownView: true, compass:true, navigationHelpButton:true, fullscreenButton:true, homeButton:true, locationBar:true, zoom:true, distanceLegend:true, sceneModePicker: true, baseLayerPicker: true, // 是否显示图层选择控件 // terrainProviderViewModels: getTerrainProviderViewModelsArr() // 自baseLayerPicker面板的地形可选数组 }, basemaps: [ // { // name: "单张图片", // icon: "//data.mars3d.cn/img/control/basemap/bingmap.png", // type: "image", // url: "/hxzkuwb/Home/img/world.jpg", // show: true // }, { name: "天地图影像", icon: "/hxzkuwb/view/Home/img/basemaps/tdt_img.png", type: "tdt", layer: "img_d", key: mars3d.Token.tiandituArr, credit: creditHtml }, { name: "天地图电子", icon: "/hxzkuwb/view/Home/img/basemaps/tdt_vec.png", type: "group", layers: [ { name: "底图", type: "tdt", layer: "vec_d", key: mars3d.Token.tiandituArr }, { name: "注记", type: "tdt", layer: "vec_z", key: mars3d.Token.tiandituArr } ], credit: creditHtml }, { name: "高德影像", icon: "/hxzkuwb/view/Home/img/basemaps/gaode_img.png", type: "group", layers: [ { name: "底图", type: "gaode", layer: "img_d" }, { name: "注记", type: "gaode", layer: "img_z" } ], credit: creditHtml }, { name: "高德电子", icon: "/hxzkuwb/view/Home/img/basemaps/gaode_vec.png", type: "gaode", layer: "vec", credit: creditHtml }, { name: "百度影像", icon: "/hxzkuwb/view/Home/img/basemaps/gaode_img.png", type: "group", layers: [ { name: "底图", type: "baidu", layer: "img_d" }, { name: "注记", type: "baidu", layer: "img_z" } ], credit: creditHtml }, { name: "百度电子", icon: "/hxzkuwb/view/Home/img/basemaps/gaode_vec.png", type: "baidu", layer: "vec", credit: creditHtml, }, { name: "谷歌影像", icon: "/hxzkuwb/view/Home/img/basemaps/google_img.png", type: "google", layer: "img_d", chinaCRS: mars3d.ChinaCRS.GCJ02, }, { name: "谷歌电子", icon: "/hxzkuwb/view/Home/img/basemaps/google_vec.png", type: "google", layer: "vec", chinaCRS: mars3d.ChinaCRS.GCJ02 }, { name: "ArcGIS影像", icon: "/hxzkuwb/view/Home/img/basemaps/esriWorldImagery.png", type: "arcgis", layer: "img_d", // 使用layer时会自动用内部固定url "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer" enablePickFeatures: false, show:true }, { "id": 2017, "pid": 10, "name": "蓝色底图", "icon": "/hxzkuwb/view/Home/demo/img/basemaps/bd-c-midnight.png", "type": "gaode", "layer": "vec", "chinaCRS": "GCJ02", "invertColor": true, "filterColor": "#4e70a6", "brightness": 0.6, "contrast": 1.8, "gamma": 0.3, "hue": 1, "saturation": 0 }, { "pid": 10, "name": "黑色底图", "icon": "/hxzkuwb/view/Home/demo/img/basemaps/bd-c-dark.png", "type": "gaode", "layer": "vec", "chinaCRS": "GCJ02", "invertColor": true, "filterColor": "#909090", "brightness": 0.6, "contrast": 1.8, "gamma": 0.3, "hue": 1, "saturation": 0 }, ] }) var currentTime = new Date(); var newTime = new Date(currentTime.getTime() - 5000); map.clock.currentTime = Cesium.JulianDate.fromDate(new Date(newTime)) showCarList() //加载人员数据 graphicLayerAnchor = new mars3d.layer.GraphicLayer() map.addLayer(graphicLayerAnchor) graphicLayerGetWay = new mars3d.layer.GraphicLayer() map.addLayer(graphicLayerGetWay) graphicLayerFence = new mars3d.layer.GraphicLayer() map.addLayer(graphicLayerFence) if (showfence == "1"){ addfence() //加载围栏数据 console.log("加载围栏数据") } if (showanchor == "1"){ addAnchor() //加载基站数据 console.log("加载基站数据") } if (showgetway == "1"){ addGetWay() //加载网关数据 console.log("加载网关数据") } if (HomeSetting.basemap == "1"){ map.basemap = 2023; //设置无底图 console.log("设置无底图") } if (HomeSetting.layer == "1"){ LayerAdd1() //加载本地瓦图 console.log("加载本地瓦图") } if (HomeSetting.image == "1"){ ImgAdd() //加载本地图片 console.log("加载本地图片") } if (HomeSetting.threemap == "1"){ showQxShequDemo() //调用三维模型 console.log("加载三维模型") } if(HomeSetting.noterrain == "1"){ map.hasTerrain = true //开启地形 map.on(mars3d.EventType.terrainLoadSuccess, function (event) { console.log("地形服务加载完成", event) }) map.on(mars3d.EventType.terrainLoadError, function (event) { console.log("地形服务加载失败", event) }) map.terrainProvider = mars3d.LayerUtil.createTerrainProvider({ url: "/hxzkuwb/view/Home/demo/titles/terrain/", }) console.log("开启地形") } //限定视角范围 // cameraHistory = new mars3d.thing.CameraHistory({ // limit: { // // 限定视角范围 // position: Cesium.Cartesian3.fromDegrees(mapPosition[0], mapPosition[1], 0), // radius: 50000.0, // debugExtent: true // }, // maxCacheCount: 999 // }) // map.addThing(cameraHistory) // cameraHistory.on(mars3d.EventType.change, function (event) { // // 触发自定义事件 // var count = event.count // }) const graphicLayerimg = new mars3d.layer.GraphicLayer() map.addLayer(graphicLayerimg) AddCamera() CshMap()//初始化地图面板按钮 return map } function showCarList() { // 创建矢量数据图层 graphicLayer = new mars3d.layer.GraphicLayer() map.addLayer(graphicLayer) graphicLayerCamera = new mars3d.layer.GraphicLayer() map.addLayer(graphicLayerCamera) // 鼠标移入提示信息 graphicLayerCamera.bindPopup(function(event) { var attr = event.graphic?.attr; var inthtml = `
${attr.name}
` return inthtml }, { autoClose: false, }) // 单击地图空白处 map.on(mars3d.EventType.clickMap, function(event) { if (lastClickCar) { lastClickCar.circle.show = false lastClickCar = null } // GongJuLanHide() // XinXiZhanShiHide() }) // 绑定点击事件 graphicLayer.on(mars3d.EventType.click, (event, position) => { var car = event.graphic personMsgtids(car.attr.id) if (lastClickCar) { if (lastClickCar === car) { return } // 重复单击,跳出 lastClickCar.circle.show = false lastClickCar = null } car.circle.show = true lastClickCar = car // car.openPopup(); } ) graphicLayerCamera.on(mars3d.EventType.click, (event, position) => { var car = event.graphic OpenHk(car.attr) // car.openPopup(); } ) var lastClickCar let PersonsList = []; // 定义一个存储已添加模型的ID集合 let addedCarIds = new Set(); let addedCarIds1 = {}; // 定义一个获取人员列表的函数 function fetchPersonsList() { $.ajax({ async: false, type: 'POST', traditional: true, url: "/hxzkuwb/getGPSCesium", dataType: 'json', data: {}, success: function(data) { PersonsList = data; // 记录当前在线人员的ID const currentOnlineIds = new Set(); const currentNoOnlineIds = new Set(); // 遍历人员列表 PersonsList.forEach(item => { let parts = item.image.split(','); item.show = true; item.type = 1; // 仅处理在线人员 if (item.online === "1") { // 使用 '===' 比较 currentOnlineIds.add(item.id); if (!addedCarIds1.hasOwnProperty(item.id)) { let modelParam = { scale: parts[1], url: "/hxzkuwb/view/"+parts[0], pitch: 0, roll: 0, }; let car = new mars3d.graphic.Route({ id: item.id, name: item.name, maxCacheCount: -1, model: { ...modelParam, clampToGround: false, }, circle: { radius: 3, materialType: mars3d.MaterialType.CircleWave, speed: 10, count: 3, gradient: 0.1, clampToGround: true, show: false }, style: { label: { text: item.name+" "+item.id, font_size: 14, color: "#000000", distanceDisplayCondition: false, clampToGround:false, backgroundOpacity:0.8, addHeight:parseInt(modelParam.scale)+parseInt(modelParam.scale), backgroundPadding:10, outlineWidth:2, outline: true, outlineColor: "#5BFF1A", }, }, attr: item, }); graphicLayer.addGraphic(car); addedCarIds1[item.id] = item.online; } } else{ currentNoOnlineIds.add(item.id); // 移除不在线人员的模型 if (addedCarIds1.hasOwnProperty(item.id)) { // 通过 ID 查找对应的图形并移除 graphicLayer.getGraphics().forEach(graphic => { if (graphic.id === item.id) { graphicLayer.removeGraphic(graphic); currentNoOnlineIds.delete(item.id); } } ); delete addedCarIds1[item.id]; } } }); NameTitle =1; } }); } function fetchPersonsListNoOnLine() { $.ajax({ async: false, type: 'POST', traditional: true, url: "/hxzkuwb/getGPSCesium", dataType: 'json', data: {}, success: function(data) { PersonsList = data; const currentOnlineIds = new Set(); const currentNoOnlineIds = new Set(); PersonsList.forEach(item => { let parts = item.image.split(','); item.show = true; item.type = 1; var colors; // 记录在线和不在线人员的ID if (item.online === "1") { currentOnlineIds.add(item.id); colors = "#000000" } else { currentNoOnlineIds.add(item.id); colors = "red" } if (!addedCarIds1.hasOwnProperty(item.id)) { let modelParam = { scale: parts[1], url: "/hxzkuwb/view/"+parts[0], pitch: 0, roll: 0, }; let car = new mars3d.graphic.Route({ id: item.id, name: item.name, maxCacheCount: -1, model: { ...modelParam, clampToGround: true, }, circle: { radius: 3, materialType: mars3d.MaterialType.CircleWave, speed: 10, count: 3, gradient: 0.1, clampToGround: true, show: false }, style: { label: { text: item.name+" "+item.id, font_size: 14, color: colors, distanceDisplayCondition: false, clampToGround:false, backgroundOpacity:0.8, addHeight:parseInt(modelParam.scale)+parseInt(modelParam.scale), backgroundPadding:10, outlineWidth:2, outline: true, outlineColor: "#5BFF1A", }, }, attr: item, }); // 将模型添加到图层中 graphicLayer.addGraphic(car); // 打开模型弹窗 // car.openPopup(); // 将已添加模型的ID记录到集合中 addedCarIds1[item.id] = item.online; } }) } }); } // 定义一个更新轨迹的函数 function updateTrajectories() { $.ajax({ async: false, type: 'POST', traditional: true, url: "/hxzkuwb/getGPS", dataType: 'json', data: {}, success: function(data) { var listALL = data; graphicLayer.eachGraphic( (car) => { // 取出对应车辆的轨迹列表 var path = listALL.filter( (item) => item.ptagid === car.id); path.forEach( (item) => { var point = new mars3d.LngLatPoint(item.baoliu2,item.baoliu3,parseInt(item.baoliu4)/parseInt(100)); car.addDynamicPosition(point, item.paddtiem); if (item.psos == "1"){ car.circle = show; } } ); } ); } }); } function updateTrajectoriesNoOnLine() { $.ajax({ async: false, type: 'POST', traditional: true, url: "/hxzkuwb/getGPS1", dataType: 'json', data: {}, success: function(data) { var listALL = data; graphicLayer.eachGraphic( (car) => { // 取出对应车辆的轨迹列表 var path = listALL.filter( (item) => item.ptagid === car.id); path.forEach( (item) => { var point = new mars3d.LngLatPoint(item.baoliu2,item.baoliu3,parseInt(item.baoliu4)/parseInt(100)); car.addDynamicPosition(point, item.paddtiem); if (item.ponline != addedCarIds1[item.ptagid]){ graphicLayer.removeGraphic(car) delete addedCarIds1[item.ptagid]; } } ); } ); } }); } // 每五秒获取一次人员列表 setInterval(function (){ if (Disappear == "0"){ fetchPersonsListNoOnLine() }else{ fetchPersonsList() } }, 5000); // 每五秒更新一次轨迹 setInterval(function (){ if (Disappear == "0"){ updateTrajectoriesNoOnLine() }else{ updateTrajectories() } }, 5000); // 页面加载时立即获取一次人员列表 setTimeout(function (){ fetchPersonsList(); },500) } function addfence() { var fences = []; var fencesName = []; $.ajax({ url: "/hxzkuwb/baidufenceName.do", type: "GET", async: false, // 设置为 false 以使请求同步 success: function(data) { fencesName = data; }, error: function(xhr, status, error) { console.error("请求失败: ", status, error); } }); $.ajax({ async: false, //同步的 type: "GET", url: "/hxzkuwb/baidufence.do", dataType: "json", success: function(data) { fences = data.fences; for (let i = 0; i < fences.length; i++) { let fencesList = fences[i].split(';') let fence = []; for (let j = 0; j < fencesList.length; j++) { const coordinateString = fencesList[j]; const [longitude,latitude] = coordinateString.split(','); fence.push([parseFloat(longitude), parseFloat(latitude)]); } let colorFence = "" let JuXingcolorFence = "" if (fencesName[i].color == "红色"){ colorFence = "#C70708" JuXingcolorFence="rgba(227,60,47,0.5)" } if (fencesName[i].color == "蓝色"){ colorFence = "#0D3DC1" JuXingcolorFence="rgba(13,130,125,0.5)" } if (fencesName[i].color == "绿色"){ colorFence = "#20D85C" JuXingcolorFence="rgba(54,150,80,0.5)" } if (fencesName[i].color == "黑色"){ colorFence = "#1E1E1E" JuXingcolorFence="rgba(0,0,0,0.5)" } if (fencesName[i].color == "白色"){ colorFence = "#FFFFFF" JuXingcolorFence="rgba(255,255,255,0.5)" } if(fencesName[i].shape =="多边形"){ const graphic = new mars3d.graphic.WallPrimitive({ positions: fence, style: { closure: true, diffHeight: fencesName[i].baoliu11/100, materialType: mars3d.MaterialType.LineFlow, materialOptions: { // 动画线材质 image: "img/textures/fence.png", axisY: true, color: colorFence, speed: 10 // 速度,建议取值范围1-100 }, label: { text: fencesName[i].name, font_size: 18, outline: true, outlineColor: colorFence, color: "#ffffff", distanceDisplayCondition: true, distanceDisplayCondition_far: 500000, distanceDisplayCondition_near: 0 } }, }) graphicLayerFence.addGraphic(graphic) }else{ var parseInt var graphic = new mars3d.graphic.RectanglePrimitive({ positions: [ fence[0], fence[1] ], style: { color: JuXingcolorFence, diffHeight: fencesName[i].baoliu11/100, label: { text: fencesName[i].name, font_size: 18, color: "#FFFFFF", distanceDisplayCondition: true, distanceDisplayCondition_far: 500000, distanceDisplayCondition_near: 0 } }, }) graphicLayerFence.addGraphic(graphic) // 还可以另外一种写法: graphic.addTo(graphicLayer) } } }, }); return fences; } function addAnchor(){ $.ajax({ async: false, type: 'POST', traditional: true, url: "/hxzkuwb/getAnchor", dataType: 'json', data: {}, success: function(data) { PersonsList = data; // 记录当前在线人员的ID // 遍历人员列表 PersonsList.forEach(item => { // if (item.baoliu1 == floores){ item.show = true; var Anchor = new mars3d.graphic.BillboardEntity({ position: [item.baoliu2, item.baoliu3, 0], style: { image: "/hxzkuwb/Home/HomeImg/anchoron.png", horizontalOrigin: Cesium.HorizontalOrigin.CENTER, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, scale:0.5, label: { text: "基站编号:"+item.pname, font_size: 12, color: "#ffffff", distanceDisplayCondition: false, clampToGround:false, verticalOrigin:Cesium.VerticalOrigin.TOP, pixelOffsetY:-30 } }, attr: item }) graphicLayerAnchor.addGraphic(Anchor) // 还可以另外一种写法: graphic.addTo(graphicLayer) // }else{ // return // } }); } }); } function addGetWay(){ $.ajax({ async: false, type: 'POST', traditional: true, url: "/hxzkuwb/getGetWay", dataType: 'json', data: {}, success: function(data) { PersonsList = data; // 记录当前在线人员的ID // 遍历人员列表 PersonsList.forEach(item => { item.show = true; let modelParam = { scale: 0.1, url: "//data.mars3d.cn/gltf/mars/leida.glb", pitch: 0, roll: 0, }; let GetWay = new mars3d.graphic.Route({ maxCacheCount: -1, model: { ...modelParam, clampToGround: true, }, attr: item, style: { label: { text: item.ptagid+""+item.pname, font_size: 18, color: "#ffffff", distanceDisplayCondition: false, clampToGround:false, addHeight:7 } }, }); // 将模型添加到图层中 graphicLayerGetWay.addGraphic(GetWay); var point = new mars3d.LngLatPoint(item.baoliu2,item.baoliu3); GetWay.addDynamicPosition(point, item.paddtiem); }); } }); } function LayerAdd(){ var tileLayer = new mars3d.layer.XyzLayer({ url: "/hxzkuwb/Home/demo/titles/{z}/{x}_{y}.png", minimumLevel: 0, maximumLevel: 20, zIndex: 25 }) map.addLayer(tileLayer) } function LayerAdd1(){ tileLayer = new mars3d.layer.TmsLayer({ name: "TMS瓦片", url: "/hxzkuwb/Home/demo/titles/" }) map.addLayer(tileLayer) } function ImgAdd(){ var tileLayer = new mars3d.layer.ImageLayer({ name: "1234", url: "/hxzkuwb/Home/demo/img/map1.png", rectangle: { xmin: 113.402366, xmax: 113.414727, ymin: 38.443572, ymax: 38.443684 }, zIndex: 20, }) map.addLayer(tileLayer) } function AddCamera(){ $.post("/hxzkuwb/FindHaiKang",function (data){ for (var i = 0 ; i ${attr.name}
` return inthtml }, { autoClose: false, closeOnClick: false, }) } }) // // 演示个性化处理graphic // initGraphicManager(graphic) } setTimeout(function (){ $.post("/hxzkuwb/FindHaiKang",function (data){ for (var i = 0 ; i { if (clickCount === 1) { clickCount = 0; } }, 250); } // 视频全屏 function btnFull() { if (videoElement.webkitRequestFullScreen) { videoElement.webkitRequestFullScreen(); } else if (videoElement.mozRequestFullScreen) { videoElement.mozRequestFullScreen(); } else if (videoElement.requestFullscreen) { videoElement.requestFullscreen(); } } // 处理视频点击事件 function handleClickVideo() { // 这里假设 isOn 是一个全局变量或通过某种方式获取 const isOn = true; // 你需要替换为实际的逻辑 const spareId = 1; // 你需要替换为实际的逻辑 if (isOn) { // 触发 selectVideo 事件 // 这里假设你有一个自定义事件或回调函数来处理 selectVideo // 例如:window.dispatchEvent(new CustomEvent('selectVideo', { detail: spareId })); dbClick(); } else { btnFull(); } } // 监听页面卸载事件 window.onbeforeunload = () => { if (webRtcServer) { webRtcServer.disconnect(); } }; // 初始化视频流 initVideo(); // maskElement.addEventListener('click', handleClickVideo); } }) },2000) function OpenHk(data){ setTimeout(function (){ const videoContainer = document.getElementById('video-contianer'); const videoElement = document.querySelector('.video'+data.id); const maskElement = document.querySelector('.mask'+data.id); // 创建 WebRtcStreamer 实例 let webRtcServer = null; var ip = 'http://'+data.shebeiport+':8000' // 'rtsp://admin:hxzk2015@192.168.31.65:554/Streaming/Channels/101' var rtps = 'rtsp://'+data.username+':'+data.password+'@'+data.ip+':'+data.port+'/Streaming/Channels/'+data.baoliu1 // 初始化视频 function initVideo() { try { webRtcServer = new WebRtcStreamer(videoElement, ip); webRtcServer.connect(rtps); // 这里需要替换为你实际的 RTSP 地址 } catch (error) { } } // 处理双击和单击事件 let clickCount = 0; function dbClick() { clickCount++; if (clickCount === 2) { btnFull(); // 双击全屏 clickCount = 0; } setTimeout(() => { if (clickCount === 1) { clickCount = 0; } }, 250); } // 视频全屏 function btnFull() { if (videoElement.webkitRequestFullScreen) { videoElement.webkitRequestFullScreen(); } else if (videoElement.mozRequestFullScreen) { videoElement.mozRequestFullScreen(); } else if (videoElement.requestFullscreen) { videoElement.requestFullscreen(); } } // 处理视频点击事件 function handleClickVideo() { // 这里假设 isOn 是一个全局变量或通过某种方式获取 const isOn = true; // 你需要替换为实际的逻辑 const spareId = 1; // 你需要替换为实际的逻辑 if (isOn) { // 触发 selectVideo 事件 // 这里假设你有一个自定义事件或回调函数来处理 selectVideo // 例如:window.dispatchEvent(new CustomEvent('selectVideo', { detail: spareId })); dbClick(); } else { btnFull(); } } // 监听页面卸载事件 window.onbeforeunload = () => { if (webRtcServer) { webRtcServer.disconnect(); } }; // 初始化视频流 initVideo(); maskElement.addEventListener('click', handleClickVideo); },1000) } function CshMap(){ map.control.compass.show = false map.control.navigationHelpButton.show = false map.control.fullscreenButton.show = false map.control.homeButton.show = false map.control.locationBar.show = false map.control.zoom.show = false map.control.sceneModePicker.show = false map.control.baseLayerPicker.show = false map.control.mouseDownView.show = false map.control.distanceLegend.show = false }