qa-regulatory-gwj-app/hybrid/html/mapShow.html

389 lines
8.6 KiB
HTML
Raw Permalink Normal View History

2023-11-07 10:08:37 +08:00
<!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 () {
//加载地图
initMap(JSON.parse(getUrlParam('covers').replaceAll('%22','"')));
window.document.title = getUrlParam('title')
};
window.addEventListener('unload', function (e) {
//销毁地图
map.destroy();
map = null;
});
// 获取url参数
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return decodeURI(r[2]);
return ""; //返回参数值
}
function initMap(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>