import route from "@/router/index"; import iconimg from "@/assets/img/dianweidingweiqizi.png"; export function allPositions(options, show, type, value) { options.forEach((item, index) => { let graphic = window.marsMap.getLayerById(item.id); // console.log(item,'item') if (!graphic) { //扩散效果 graphic = new mars3d.layer.GeoJsonLayer({ id: item.id, name: "zhendi", data: item, symbol: { type: "diffuseWall", merge: true, styleOptions: { color: "#0066cc", // 较深的蓝色(顶部) baseColor: "#002244", // 更深的蓝色(底部),增强对比 opacity: 0.7, // 顶部略透明,突出渐变 diffHeight: 120, // 高度适中,扩散明显 speed: 5, // 中等速度 outline: true, outlineColor: "#0066cc", // 轮廓使用较深蓝色 outlineOpacity: 1, outlineWidth: 3.0 // 加粗轮廓,边界清晰 } }, show, popup: item.name }); window.marsMap.addLayer(graphic); } else { graphic.show = show; graphic.setOptions({ data: item }); } let graphics = window.marsMap.getLayerById(item.id + 10); if (!graphics) { //区域 graphics = new mars3d.layer.GeoJsonLayer({ id: item.id + 10, name: "zhendi", data: item, symbol: { styleOptions: { fill: true, color: "#3388cc", opacity: 0.5, outline: true, outlineStyle: { width: 2, opacity: 0.1 // materialType: "CircleScan", // materialOptions: { // color: item.properties.color // } } } }, show, popup: item.name }); window.marsMap.addLayer(graphics); } else { graphics.show = show; graphics.setOptions({ data: item }); if (type === "all") { } else { graphics.flyTo(); console.log(value, item, "valueitem"); let graphicLayer = window.marsMap.getLayerById("center"); if (!graphicLayer) { graphicLayer = new mars3d.layer.GraphicLayer({ id: "center" }); window.marsMap.addLayer(graphicLayer); } else { graphicLayer.clear(); } let graphic = graphicLayer.getGraphicById(value.id); if (!graphic) { graphic = new mars3d.graphic.BillboardEntity({ id: value.id, name: "中心点", position: [value.lon, value.lat, 0], style: { image: iconimg, scale: 1, width: 30, height: 50, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, verticalOrigin: Cesium.VerticalOrigin.BOTTOM } }); graphicLayer.addGraphic(graphic); // 还可以另外一种写法: graphic.addTo(graphicLayer) } } } // if (item.regionModels.length !== 0) { // item.regionModels.forEach((val, index) => { // } }); } export function allDevices(options, type, show) { let graphicLayer = window.marsMap.getLayerById("devLog"); if (!graphicLayer) { graphicLayer = new mars3d.layer.GraphicLayer({ id: "devLog" }); window.marsMap.addLayer(graphicLayer); } else { graphicLayer.clear(); } window.marsMap.on("morphStart", function (event) { console.log("开始变换模式", event); }); if (type === "all") { options.forEach((item, index) => { if (item.devices.length !== 0) { item.devices.forEach((deviceItem, index) => { let graphic = graphicLayer.getGraphicById(deviceItem.id); if (!graphic) { graphic = new mars3d.graphic.BillboardEntity({ id: deviceItem.id, name: "设备", position: new mars3d.LngLatPoint( deviceItem.lon, deviceItem.lat, 0 ), style: { image: deviceItem.isOnline ? require(`@/assets/img/device/deviceIcon/${deviceItem.icon}.png`) : require(`@/assets/img/device/deviceIcon/${deviceItem.icon}-offline.png`), // visibleDepth:false, scale: 1.5, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, clampToGround: true, scaleByDistance: true, scaleByDistance_near: 100, scaleByDistance_nearValue: 0.5 }, attr: deviceItem, show }); bindLayerPopup(graphicLayer, graphic); graphicLayer.addGraphic(graphic); } else { graphic.show = show; graphic.setOptions({ style: { image: deviceItem.isOnline ? require(`@/assets/img/device/deviceIcon/${deviceItem.icon}.png`) : require(`@/assets/img/device/deviceIcon/${deviceItem.icon}-offline.png`) } }); if (deviceItem.icon === "9") { graphic.setOptions({ position: new mars3d.LngLatPoint( deviceItem.lon, deviceItem.lat, 0 ) }); } } }); } }); } else { options.devices.forEach((item, index) => { // const image = getImageSrc(item.deviceType.type); let graphic = graphicLayer.getGraphicById(item.id); if (!graphic) { graphic = new mars3d.graphic.BillboardEntity({ id: item.id, name: "设备", position: new mars3d.LngLatPoint(item.lon, item.lat, 0), style: { image: item.isOnline ? require(`@/assets/img/device/deviceIcon/${item.icon}.png`) : require(`@/assets/img/device/deviceIcon/${item.icon}-offline.png`), // visibleDepth:false, scale: 1.5, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, clampToGround: true, scaleByDistance: true, scaleByDistance_near: 100, scaleByDistance_nearValue: 0.5 }, attr: item, show }); bindLayerPopup(graphicLayer, graphic); graphicLayer.addGraphic(graphic); } else { graphic.show = show; graphic.setOptions({ style: { image: item.isOnline ? require(`@/assets/img/device/deviceIcon/${item.icon}.png`) : require(`@/assets/img/device/deviceIcon/${item.icon}-offline.png`) } }); if (deviceItem.icon === "9") { graphic.setOptions({ position: new mars3d.LngLatPoint(deviceItem.lon, deviceItem.lat, 0) }); } } }); } } import imgUav from "@/assets/img/uavimg.png"; //设备广告牌 function bindLayerPopup(graphicLayer, graphic) { let attr = graphic.attr; if (graphic.name === "无人机") { graphic.bindPopup( `
频段
${attr.freq}
距离
${attr.distance}
型号
${attr.device_type}
高度
${attr.height}
SN码
${attr.serial_number}
中心点
${attr.centerdistance}
三维速度
${attr.height}
经度
${attr.lon}
IP
${attr.ip}
纬度
${attr.lat}
状态
${attr.isOnline ? "在线" : "离线"}