<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="initial-scale=1,maximum-scale=1,user-scalable=no"
/>
<link
href="http://ua.bigemap.com:30081/bmsdk/bigemap-gl.js/v1.1.0/Widgets/widgets.css"
rel="stylesheet"
/>
<script src="http://ua.bigemap.com:30081/bmsdk/bigemap-gl.js/v1.1.0/bigemap-gl.js"></script>
<script src="http://bigemap.com/offline_data/newjunbiao/bmgl-plot.min.js"></script>
<style>
* {
margin: 0;
padding: 0;
}
html,
body {
width: 100%;
height: 100%;
}
#container {
width: 100%;
height: 100%;
}
.bmgl-widget-credits {
display: none;
}
.tools {
position: absolute;
z-index: 9;
width: 200px;
height: 40px;
top: 20px;
left: 20px;
}
.div-layer {
color: white;
width: 200px;
height: 60px;
line-height: 20px;
font-family: "楷體";
font-weight: 400;
background-color: #3b474e;
display: flex;
flex-direction: column;
box-sizing: border-box;
padding-left: 10px;
}
</style>
<title>Google Map Streets</title>
</head>
<body>
<div id="container">
<div class="tools">
<button class="one">清除所有的光錐</button>
<!-- <button class="two">隨機(jī)生成光錐</button> -->
</div>
</div>
<script type="module">
import { ConeGlow } from "/offline_data/gz/ConeGlow.js";
bmgl.Config.HTTP_URL = 'http://ua.bigemap.com:30081/bmsdk/';
window.viewer = new bmgl.Viewer("container", {
mapId: "bigemap.dc-tian-w-satellite",
infoBox: false,
requestRenderMode: false,
});
if (bmgl.FeatureDetection.supportsImageRenderingPixelated()) {
viewer.resolutionScale = window.devicePixelRatio;
}
//開(kāi)啟抗鋸齒,讓圖像更加順滑
viewer.scene.postProcessStages.fxaa.enabled = true;
var glowArr = [];
// 彈出框管理對(duì)象
var manager = new bmgl.div.DivLayerManager(viewer, {
click: function (detail, position) {
// console.log(detail, position);
},
});
var popupLayer = null;
var aquaGlow = new ConeGlow(
viewer,
bmgl.Cartesian3.fromDegrees(104, 30),
{
height: 500,
bottomRadius: 200,
color: bmgl.Color.AQUA,
// 添加一些額外的數(shù)據(jù)用于判斷
extraData: {
pos: [104, 30],
attr: "藍(lán)色光錐",
},
}
);
var redGlow = new ConeGlow(
viewer,
bmgl.Cartesian3.fromDegrees(104.01, 30.04),
{
height: 500,
bottomRadius: 200,
color: bmgl.Color.RED,
extraData: {
pos: [104.01, 30.04],
attr: "紅色光錐",
},
}
);
var yellowGlow = new ConeGlow(
viewer,
bmgl.Cartesian3.fromDegrees(104.03, 30.04),
{
height: 500,
bottomRadius: 200,
color: bmgl.Color.YELLOW,
extraData: {
pos: [104.03, 30.04],
attr: "黃色光錐",
},
}
);
glowArr.push(aquaGlow);
glowArr.push(redGlow);
glowArr.push(yellowGlow);
viewer.scene.camera.flyTo({
destination: bmgl.Cartesian3.fromDegrees(104, 30, 30000),
});
//創(chuàng)建事件處理對(duì)象
var handler = new bmgl.ScreenSpaceEventHandler(viewer.scene.canvas);
//設(shè)置點(diǎn)擊事件
handler.setInputAction((e) => {
var endPosition = e.position;
triggerFn(endPosition);
}, bmgl.ScreenSpaceEventType.LEFT_CLICK);
function triggerFn(endPosition) {
var obj = viewer.scene.pick(endPosition);
// console.log("obj", obj);
if (bmgl.defined(obj)) {
if (obj.primitive && obj.primitive.extraData && obj.primitive.extraData.attr) {
var myData = obj.primitive.extraData;
// console.log("extraData", myData);
if (popupLayer != null) {
manager.removeLayer(popupLayer);
popupLayer = null;
}
var pos = myData.pos;
let pp = bmgl.Cartesian3.fromDegrees(pos[0], pos[1]);
popupLayer = new bmgl.div.DivLayer(
'<div class="div-layer">' +
'<h5>'+`${myData.attr}`+ '</h5>'+
'<h5>'+`經(jīng)緯度:${myData.pos.toString()}`+ '</h5>'+
"</div>",
pp,
{
width: 50,
height: 50,
offset: {
x: 0,
y: -90,
},
}
);
manager.addLayer(popupLayer);
}
} else {
if (popupLayer != null) {
manager.removeLayer(popupLayer);
popupLayer = null;
}
return;
}
}
document
.querySelector(".one")
.addEventListener("click", function (e) {
glowArr.forEach((v) => {
//移除光錐
v.remove();
});
glowArr = [];
});
</script>
</body>
</html>