factory_web/src/views/bigScreen/cesiumtest0.vue

173 lines
5.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div id="mars3dContainer" class="mars3d-container"></div>
</template>
<script>
// import * as mars3d from "mars3d";
const Cesium = mars3d.Cesium;
const point1 = [117.083458,31.655321,42]
const point2 = [116.027392, 36.413562, 42]
const point3 = mars3d.PointUtil.getOnLinePointByLen(
mars3d.LngLatPoint.toCartesian(point1),
mars3d.LngLatPoint.toCartesian(point2),
40
)
export default {
name: 'cesium',
data() {
return {
viewer: null
}
},
created() {
const scriptInfo = document.createElement("script");
scriptInfo.setAttribute("data-callType", "callScript");
scriptInfo.src = "http://mars3d.cn/lib/Cesium/Cesium.js";
document.head.appendChild(scriptInfo);
},
mounted() {
const map = new mars3d.Map("mars3dContainer", {
scene: {
center: { lat: 30.054604, lng: 108.885436, alt: 100, heading: 316, pitch: 10},
},
})
map.fixedLight = true // 固定光照避免gltf模型随时间存在亮度不一致。
let tilesetLayer = new mars3d.layer.TilesetLayer({
type: "3dtiles",
name:'超低排放',
url: "/3dtiles/tileset.json",
popup: "all",
scale: 1,
// rotation: {x:0, y:1,z: 0 }, // 模型的旋转角度这里以Z轴为例表示沿Z轴旋转45度
highlight: { type: "click", color: "#00ffff" },
flyTo: true, //视角切换到模型所在位置
heading: 0, // 航向角围绕Z轴旋转
pitch: -5, // 俯仰角,向上调整
roll: 10 // 翻滚角围绕Y轴旋转
});
map.addLayer(tilesetLayer);
map.on(mars3d.EventType.click, function (event) {
let feature = event.pickedObject;
//下面只是演示解释底层实现在平台中直接通过event.graphic.attr可以获取属性
console.log("feature", feature);
console.log("Cesium.Cesium3DTileFeature", Cesium.Cesium3DTileFeature);
console.log(feature instanceof Cesium.Cesium3DTileFeature)
if (feature instanceof Cesium.Cesium3DTileFeature) {
// let propertyNames = feature.getPropertyNames();
// let length = propertyNames.length;
// for (var i = 0; i < length; ++i) {
// let propertyName = propertyNames[i];
// console.log(propertyName + ': ' + feature.getProperty(propertyName));
// }
}
})
// 创建图层
let GraphicLayer = new mars3d.layer.GraphicLayer({
name: "墙",
show: true,
// 属性
strokestyle: "#3388ff",
strokewidth: 2,
fill: true,
fillcolor: "#00ffff",
opacity: 0.5,
// 样式
style: {
// 可见范围
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 200000),
// 高度
},
semicolon: true
})
map.addLayer(GraphicLayer);
// 矢量对象
let wallGraphic = new mars3d.graphic.WallEntity({
positions: [point1, point2],
// @param [options.allowDrillPick] - 是否允许鼠标穿透拾取
allowDrillPick: true,
style: {
// 可见范围
distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 20000),
// 文字墙高度
diffHeight:15 ,
materialType: mars3d.MaterialType.Text,
materialOptions: {
text: "显示文本",
font_family: "楷体",
color: "#00ffff"
}
},
flyTo:true,
attr: { remark: "test" }
})
GraphicLayer.addGraphic(wallGraphic);
// 创建标注图片的图形对象[获取设备并将设备id放入attr中点击图标时可获得设备id根据设备id查询设备相关信息]
const graphic = new mars3d.graphic.FontBillboardEntity({
position: new mars3d.LngLatPoint(117.084699, 31.65172, 6),
style: {
image: "img/enp_blue/ball.png",
color: "#00ffff",
cale: 0.5,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
label: {
text: "设备名称",
font_size: 20,
color: "#ff0000",
pixelOffsetY: -120,
distanceDisplayCondition: true,
distanceDisplayCondition_far: 50000,
distanceDisplayCondition_near: 0
}
},
attr: { remark: "设备id" }
})
// 绑定Popup
// const inthtml = `<table style="width: auto;">
// <tr>
// <th scope="col" colspan="2" style="text-align:center;font-size:15px;">我是graphic上绑定的Popup </th>
// </tr>
// <tr>
// <td>提示:</td>
// <td>这只是测试信息可以任意html</td>
// </tr>
// </table>`
// graphic.bindPopup(inthtml).openPopup()
GraphicLayer.addGraphic(graphic);
// GraphicLayer.on(mars3d.EventType.click, function (event) {
// console.log("监听layer单击了矢量对象", event)
// })
function bindLayerPopup() {
GraphicLayer.bindPopup(function (event) {
console.log("监听layer绑定popup", event)
const attr = event.graphic.attr || {}
attr["类型"] = event.graphic.type
attr["来源"] = "我是layer上绑定的Popup"
attr["备注"] = "我支持鼠标交互"
return mars3d.Util.getTemplateHtml({ title: "矢量图层", template: "all", attr })
})
}
bindLayerPopup();
// const graphic2 = new mars3d.graphic.BillboardEntity({
// position: [117.084699, 31.65172, 6],
// style: {
// image: "img/enp_blue/ball.png",
// scale: 1.0,
// horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
// verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
// clampToGround: true
// },
// attr: { remark: "示例1" }
// })
// GraphicLayer.addGraphic(graphic2);
},
mothods: {
},
onUnload() {
map.destroy()
}
}
</script>
<style></style>