383 lines
8.3 KiB
HTML
383 lines
8.3 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>真趣一图通</title>
|
||
<script type="text/javascript" src="jsmap/2D/jsmap_light.js"></script>
|
||
<link type="text/css" rel="stylesheet" href="jsmap/2D/jsmap_light.css"></link>
|
||
<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
|
||
<style>
|
||
.jsmap-animation-point,
|
||
.jsmap-animation-point:after,
|
||
.jsmap-animation-point:before,
|
||
.jsmap-animation-point p,
|
||
.jsmap-animation-point p:after,
|
||
.jsmap-animation-point p:before {
|
||
margin: 0;
|
||
padding: 0;
|
||
-webkit-box-sizing: border-box;
|
||
-moz-box-sizing: border-box;
|
||
-o-box-sizing: border-box;
|
||
-ms-box-sizing: border-box;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jsmap-animation-point {
|
||
width: 10px;
|
||
height: 10px;
|
||
border-radius: 50%;
|
||
border: 1px solid hsla(0, 0%, 100%, 0.5);
|
||
cursor: pointer;
|
||
color: #0ff;
|
||
background: currentColor;
|
||
z-index: 3;
|
||
left: 50%;
|
||
top: 50%;
|
||
-webkit-transform: translate(-50%, -50%);
|
||
-moz-transform: translate(-50%, -50%);
|
||
-o-transform: translate(-50%, -50%);
|
||
-ms-transform: translate(-50%, -50%);
|
||
transform: translate(-50%, -50%);
|
||
box-shadow: 0 0 2em currentColor, 0 0 0.5em currentColor;
|
||
position: absolute;
|
||
}
|
||
|
||
.jsmap-animation-point:after,
|
||
.jsmap-animation-point:before,
|
||
.jsmap-animation-point p:after,
|
||
.jsmap-animation-point p:before {
|
||
content: "";
|
||
position: absolute;
|
||
width: 100%;
|
||
height: 100%;
|
||
left: 50%;
|
||
top: 50%;
|
||
border-radius: 50%;
|
||
-webkit-transform: translate(-50%, -50%);
|
||
-moz-transform: translate(-50%, -50%);
|
||
-o-transform: translate(-50%, -50%);
|
||
-ms-transform: translate(-50%, -50%);
|
||
transform: translate(-50%, -50%);
|
||
}
|
||
|
||
.jsmap-animation-point:after,
|
||
.jsmap-animation-point:before {
|
||
border: 1px solid;
|
||
-webkit-animation: jsmap-mapAni 1s ease infinite;
|
||
-moz-animation: jsmap-mapAni 1s ease infinite;
|
||
-o-animation: jsmap-mapAni 1s ease infinite;
|
||
-ms-animation: jsmap-mapAni 1s ease infinite;
|
||
animation: jsmap-mapAni 1s ease infinite;
|
||
}
|
||
|
||
.jsmap-animation-point p:before {
|
||
border: 1px solid;
|
||
}
|
||
|
||
.jsmap-animation-point p {
|
||
position: absolute;
|
||
left: 50%;
|
||
top: 50%;
|
||
width: 0;
|
||
height: 0;
|
||
border-radius: 50%;
|
||
-webkit-transform: translate(-50%, -50%);
|
||
-moz-transform: translate(-50%, -50%);
|
||
-o-transform: translate(-50%, -50%);
|
||
-ms-transform: translate(-50%, -50%);
|
||
transform: translate(-50%, -50%);
|
||
-webkit-animation: jsmap-mapAni 2s ease infinite;
|
||
-moz-animation: jsmap-mapAni 2s ease infinite;
|
||
-o-animation: jsmap-mapAni 2s ease infinite;
|
||
-ms-animation: jsmap-mapAni 2s ease infinite;
|
||
animation: jsmap-mapAni 2s ease infinite;
|
||
}
|
||
|
||
@-webkit-keyframes jsmap-mapAni {
|
||
0% {
|
||
width: 0;
|
||
height: 0;
|
||
opacity: 1;
|
||
filter: alpha(opacity=1);
|
||
}
|
||
|
||
25% {
|
||
width: 12px;
|
||
height: 12px;
|
||
opacity: 0.7;
|
||
filter: alpha(opacity=70);
|
||
}
|
||
|
||
50% {
|
||
width: 20px;
|
||
height: 20px;
|
||
opacity: 0.5;
|
||
filter: alpha(opacity=50);
|
||
}
|
||
|
||
75% {
|
||
width: 30px;
|
||
height: 30px;
|
||
opacity: 0.2;
|
||
filter: alpha(opacity=20);
|
||
}
|
||
|
||
to {
|
||
width: 40px;
|
||
height: 40px;
|
||
opacity: 0;
|
||
filter: alpha(opacity=0);
|
||
}
|
||
}
|
||
|
||
@-moz-keyframes jsmap-mapAni {
|
||
0% {
|
||
width: 0;
|
||
height: 0;
|
||
opacity: 1;
|
||
filter: alpha(opacity=1);
|
||
}
|
||
|
||
25% {
|
||
width: 12px;
|
||
height: 12px;
|
||
opacity: 0.7;
|
||
filter: alpha(opacity=70);
|
||
}
|
||
|
||
50% {
|
||
width: 20px;
|
||
height: 20px;
|
||
opacity: 0.5;
|
||
filter: alpha(opacity=50);
|
||
}
|
||
|
||
75% {
|
||
width: 30px;
|
||
height: 30px;
|
||
opacity: 0.2;
|
||
filter: alpha(opacity=20);
|
||
}
|
||
|
||
to {
|
||
width: 40px;
|
||
height: 40px;
|
||
opacity: 0;
|
||
filter: alpha(opacity=0);
|
||
}
|
||
}
|
||
|
||
@-o-keyframes jsmap-mapAni {
|
||
0% {
|
||
width: 0;
|
||
height: 0;
|
||
opacity: 1;
|
||
filter: alpha(opacity=1);
|
||
}
|
||
|
||
25% {
|
||
width: 12px;
|
||
height: 12px;
|
||
opacity: 0.7;
|
||
filter: alpha(opacity=70);
|
||
}
|
||
|
||
50% {
|
||
width: 20px;
|
||
height: 20px;
|
||
opacity: 0.5;
|
||
filter: alpha(opacity=50);
|
||
}
|
||
|
||
75% {
|
||
width: 30px;
|
||
height: 30px;
|
||
opacity: 0.2;
|
||
filter: alpha(opacity=20);
|
||
}
|
||
|
||
to {
|
||
width: 40px;
|
||
height: 40px;
|
||
opacity: 0;
|
||
filter: alpha(opacity=0);
|
||
}
|
||
}
|
||
|
||
@-ms-keyframes jsmap-mapAni {
|
||
0% {
|
||
width: 0;
|
||
height: 0;
|
||
opacity: 1;
|
||
filter: alpha(opacity=1);
|
||
}
|
||
|
||
25% {
|
||
width: 12px;
|
||
height: 12px;
|
||
opacity: 0.7;
|
||
filter: alpha(opacity=70);
|
||
}
|
||
|
||
50% {
|
||
width: 20px;
|
||
height: 20px;
|
||
opacity: 0.5;
|
||
filter: alpha(opacity=50);
|
||
}
|
||
|
||
75% {
|
||
width: 30px;
|
||
height: 30px;
|
||
opacity: 0.2;
|
||
filter: alpha(opacity=20);
|
||
}
|
||
|
||
to {
|
||
width: 40px;
|
||
height: 40px;
|
||
opacity: 0;
|
||
filter: alpha(opacity=0);
|
||
}
|
||
}
|
||
|
||
@keyframes jsmap-mapAni {
|
||
0% {
|
||
width: 0;
|
||
height: 0;
|
||
opacity: 1;
|
||
filter: alpha(opacity=1);
|
||
}
|
||
|
||
25% {
|
||
width: 12px;
|
||
height: 12px;
|
||
opacity: 0.7;
|
||
filter: alpha(opacity=70);
|
||
}
|
||
|
||
50% {
|
||
width: 20px;
|
||
height: 20px;
|
||
opacity: 0.5;
|
||
filter: alpha(opacity=50);
|
||
}
|
||
|
||
75% {
|
||
width: 30px;
|
||
height: 30px;
|
||
opacity: 0.2;
|
||
filter: alpha(opacity=20);
|
||
}
|
||
|
||
to {
|
||
width: 40px;
|
||
height: 40px;
|
||
opacity: 0;
|
||
filter: alpha(opacity=0);
|
||
}
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div id='mapContainer'></div>
|
||
</body>
|
||
|
||
<script>
|
||
//定义全局map变量
|
||
var map = null;
|
||
//定义地图ID变量
|
||
var mapID2D = '000000';
|
||
|
||
|
||
window.onload = function () {
|
||
let r = window.location.search.substr(1).replaceAll('%22','"');
|
||
//加载地图
|
||
initMap(JSON.parse(r));
|
||
};
|
||
|
||
window.addEventListener('unload', function (e) {
|
||
//销毁地图
|
||
map.destroy();
|
||
map = null;
|
||
});
|
||
|
||
function initMap(pointArr) {
|
||
console.info(pointArr)
|
||
openMap2D(pointArr);
|
||
}
|
||
//打开地图
|
||
function openMap2D(pointArr) {
|
||
//初始化参数
|
||
var mapOptions = {
|
||
//必要,地图容器
|
||
container: 'mapContainer',
|
||
//必要,地图路径
|
||
mapServerURL: 'jsmap/2D/data/map',
|
||
mapScaleLevelRange: [1, 24],
|
||
defaultMapScaleLevel: 19,
|
||
showGlobe: true,
|
||
imageryProvider: jsmaplight.JSImageryProviderType.IMAGE_TDT,
|
||
showLoading:false
|
||
};
|
||
//初始化地图对象
|
||
map = new jsmaplight.JSMap(mapOptions);
|
||
|
||
//打开map服务器的地图数据和主题
|
||
map.openMapById(mapID2D,{
|
||
focusFloorId: 0, //聚焦楼层,默认0
|
||
});
|
||
|
||
//地图加载完成事件
|
||
map.on("loadComplete", e => {
|
||
var zoomControl = new jsmaplight.JSZoomControl({
|
||
position: jsmaplight.JSControlPosition.LEFT_TOP,
|
||
offset: {
|
||
x: 10,
|
||
y: 10
|
||
}
|
||
});
|
||
|
||
if (document.documentElement.clientWidth >= 992) {
|
||
map.addControl(zoomControl);
|
||
}
|
||
addPointMarker2D(pointArr)
|
||
});
|
||
}
|
||
|
||
//添加标注
|
||
function addPointMarker2D(pointArr) {
|
||
for (let i = 0; i < pointArr.length; i++) {
|
||
var pointMarker = new jsmaplight.JSImageMarker({
|
||
id: 'point'+i,
|
||
image: pointArr[i].iconPath,//图片路径
|
||
position: new jsmaplight.JSPoint(Number(pointArr[i].longitude), Number(pointArr[i].latitude), 0), //坐标
|
||
floorId: 0,
|
||
offset: jsmaplight.JSControlPosition.LEFT_BOTTOM,
|
||
properties: {
|
||
type: 0
|
||
},//属性设置
|
||
callback: (node) => {
|
||
console.log(node);
|
||
} //回调事件
|
||
});
|
||
map.addMarker(pointMarker);
|
||
}
|
||
}
|
||
|
||
</script>
|
||
|
||
<style type="text/css">
|
||
html,
|
||
body,
|
||
#mapContainer {
|
||
width: 100%;
|
||
height: 100%;
|
||
margin: 0;
|
||
padding: 0;
|
||
overflow: hidden;
|
||
}
|
||
|
||
</style>
|
||
</html>
|