<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<script src="http://bigemap.com/offline_data/newjunbiao/vue.js"></script>
<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>
<!-- elementui -->
<script src="http://bigemap.com/offline_data/newjunbiao/elementui.js"></script>
<link rel="stylesheet" href="http://bigemap.com/offline_data/newjunbiao/elementui.css" />
<title>鼠標移動事件</title>
<style>
* {
margin: 0;
padding: 0;
}
html,
body {
width: 100%;
height: 100%;
}
#app {
width: 100%;
height: 100%;
}
#baseMap {
width: 100%;
height: 100%;
}
.tools {
position: absolute;
z-index: 9;
top: 40px;
right: 60px;
width: 200px;
height: 40px;
display: flex;
align-items: center;
}
</style>
</head>
<body>
<div id="app">
<div id="baseMap">
<div
id="mouse_state"
style="
position: absolute;
z-index: 9999;
top: 10px;
left: 10px;
background-color: white;
padding: 6px;
"
>
{{showText}}
</div>
</div>
</div>
<script>
let viewer = null;
window.onload = () => {
new Vue({
el: "#app",
data() {
return {
showText: "暫無鼠標移動信息",
};
},
mounted() {
this.initMap();
},
methods: {
//初始化地圖
initMap() {
bmgl.Config.HTTP_URL = "http://ua.bigemap.com:30081/bmsdk/";
viewer = new bmgl.Viewer("baseMap", {
mapId: "bigemap.dc-tian-w-satellite",
infoBox: false,
selectionIndicator: false,
requestRenderMode: false,
});
this.initMouseMoveEvent();
},
//初始化鼠標移動事件
initMouseMoveEvent() {
var _this = this;
let handler = new bmgl.ScreenSpaceEventHandler(
viewer.scene.canvas
);
handler.setInputAction(function (e) {
//得到當前三維場景的橢球體
let ellipsoid = viewer.scene.globe.ellipsoid;
//通過指定的橢球或者地圖對應的坐標系,將鼠標的二維坐標轉(zhuǎn)換為對應橢球體三維坐標
let ray = viewer.camera.getPickRay(
e.endPosition
);
let cartesian = viewer.scene.globe.pick(
ray,
viewer.scene
);
if (cartesian) {
//將笛卡爾坐標轉(zhuǎn)換為地理坐標
let cartographic =
ellipsoid.cartesianToCartographic(
cartesian
);
//將弧度轉(zhuǎn)為度的十進制度表示
longitudeString = bmgl.Math.toDegrees(
cartographic.longitude
).toFixed(7);
latitudeString = bmgl.Math.toDegrees(
cartographic.latitude
).toFixed(7);
//獲取相機高度
height = Math.ceil(
viewer.camera.positionCartographic
.height
).toFixed(2);
_this.showText =
"當前鼠標位置:經(jīng)度:" +
longitudeString +
", 緯度:" +
latitudeString +
", 高度:" +
height ;
} else {
_this.showText = "暫無鼠標移動信息";
}
}, bmgl.ScreenSpaceEventType.MOUSE_MOVE);
},
},
beforeDestroy() {
viewer.destroy();
viewer = null;
},
});
};
</script>
</body>
</html>