公路局项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

219 lines
6.4 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
#map {
width: 100%;
height: 100%;
}
.mask-wrapper {
position: fixed;
background: rgba(0, 0, 0, 0.5);
z-index: 100001;
width: 100%;
height: 100%;
top: 0;
left: 0;
display: none;
}
.mask-box {
position: relative;
}
.mask-content {
border: 1px solid #efefef;
width: 80%;
margin: auto;
margin-top: 150px;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #999;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 6px;
box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
outline: 0;
overflow: hidden;
transform: rotateX(90deg);
transition: transform 0.3s ease-out;
}
.mask-header {
display: flex;
justify-content: space-between;
padding: 15px;
border-bottom: 1px solid #e5e55e;
font-size: 16px;
font-weight: bold;
min-height: 20px;
}
.close {
width: 20px;
}
.mask-body {
position: relative;
padding: 15px;
max-height: 350px;
overflow-y: auto;
overflow-x: auto;
}
.mask-foot {
padding: 15px;
text-align: right;
border-top: 1px solid #e5e5e5;
}
.show-am {
transform: rotateX(0);
}
.table-item {
font-size: 16px;
line-height: 22px;
text-shadow: 0px 0px 5px rgba(102, 100, 100, 0.575);
}
.table-item span:nth-child(1) {
color: grey;
}
</style>
<link
rel="stylesheet"
href="http://apps.bdimg.com/libs/jqueryui/1.10.4/css/jquery-ui.min.css"
/>
<script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://apps.bdimg.com/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<link rel="stylesheet" href="jqueryui/style.css" />
<script src="http://10.248.12.27:8003/CooGL.js"></script>
<!-- <script src="http://192.168.10.202:30010/CooGL/version/v1.3/CooGL.js"></script> -->
<script src="./data.js"></script>
<script type="module">
class Maskdialog {
constructor(config = {}) {
this.cancle = config.cancle || null
this.title = config.title || ''
this.width = config.width || '30%'
this.setProps()
this.init()
this.renderTitle()
this.handle()
}
setProps() {
this.mask = document.querySelector('.mask-wrapper')
this.diaglogContent = document.querySelector('.mask-content')
this.closeIcon = document.querySelector('.mask-header>.close')
this.maskBody = document.querySelector('.mask-body')
this.titleNode = document.querySelector('.mask-header-title')
this.tableWrapper = document.querySelector('.mask-body-content')
}
init() {
this.diaglogContent.style.width = this.width
}
show() {
this.mask.style.display = 'block'
setTimeout(() => {
this.diaglogContent.style.transform = 'rotateX(0)'
}, 100)
}
hidden() {
this.mask.style.display = 'none'
setTimeout(() => {
this.diaglogContent.style.transform = 'rotateX(90deg)'
}, 100)
this.tableWrapper.innerHTML = ''
}
handle() {
this.mask.addEventListener(
'click',
(event) => {
event.stopPropagation()
if (
event.target.classList.contains('.mask-wrapper') ||
event.target.classList.contains('.mask-box')
) {
this.hidden()
}
},
false
)
this.closeIcon.addEventListener('click', () => {
this.hidden()
})
}
render(domTemp) {
if (domTemp instanceof HTMLElement) {
domTemp = this.domTostring(domTemp)
}
this.maskBody.innerHTML = domTemp
}
domTostring(node) {
let temNode = document.createElement('div')
let clone_node = node.cloneNode(true)
temNode.appendChild(clone_node)
let str = temNode.innerHTML
temNode = clone_node = null
return str
}
renderTitle() {
this.titleNode.innerHTML = this.title
}
}
//现场
CooGL.CooServer.address = 'http://10.248.12.28:8000'
CooGL.CooServer.defaultAccessToken =
'ddf0c147-706d-4ba1-a188-b04ef92633ce'
//kelan
// CooGL.CooServer.address = 'http://192.168.10.202:8099'
// CooGL.CooServer.defaultAccessToken =
// '7e094d6c-ee42-467b-8fbf-73ca53eaa2f6'
window.map = new CooGL.MapViewer('map', {
demUrl: false,
fps: false,
})
const guideboard = map.addLayer(
CooGL.Layer.from3dtilesModel({ url: './road/tileset.json' })
)
map.zoomTo(guideboard)
map.event.click((e) => {
const name = e.graphic.getProperty('name')
console.warn(name)
let mask = new Maskdialog({
title: name,
})
const tableData = data.find((item) => item[1] === name)
let content = '<div>'
dataLabel.forEach((item, key) => {
if (!item || !tableData[key]) return
content += `<div class="table-item"><span>${item}:</span><span>${tableData[key]}</span></div>`
})
content += '</div>'
mask.render(content) //需渲染的dom 支持字符串模板和真实dom节点
mask.show()
})
const layer = map.addLayer(
CooGL.CooServerResource.fromAssertId('青岛公路_20231024'),
{
liftUp: -5,
}
)
window.layer = layer
// map.flyTo(layer)
</script>
</head>
<body>
<div id="map"></div>
<div class="mask-wrapper">
<div class="mask-box">
<div class="mask-content">
<div class="mask-header">
<span class="mask-header-title"></span>
<button class="close">&times;</button>
</div>
<div class="mask-body">
<div class="mask-body-content" id="table-wrapper"></div>
</div>
</div>
</div>
</div>
</body>
</html>