449 lines
11 KiB
HTML
449 lines
11 KiB
HTML
|
||
<!DOCTYPE html>
|
||
<html>
|
||
|
||
<head>
|
||
<meta charset="utf-8"/>
|
||
<title>hello-jsmap</title>
|
||
<script src="http://192.168.192.201:7024/joysuch/jsmap/jsmap.js" type="text/javascript"></script>
|
||
<link type="text/css" href="http://192.168.192.201:7024/joysuch/jsmap/jsmap.css" rel="stylesheet"/>
|
||
<!-- <script src="http://mapdemo.joysuch.com/lib/jsmap/jsmap.js" type="text/javascript"></script>-->
|
||
<!-- <link type="text/css" href="http://mapdemo.joysuch.com/lib/jsmap/jsmap.css" rel="stylesheet"/>-->
|
||
<link rel="stylesheet" href="http://192.168.192.201:7024/joysuch/LocalAssets/css/animation/pop.css">
|
||
<link rel="stylesheet" href="http://192.168.192.201:7024/joysuch/LocalAssets/css/animation/loading.css">
|
||
<link rel="stylesheet" href="http://192.168.192.201:7024/joysuch/LocalAssets/css/dom.css">
|
||
<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>
|
||
<script type="text/javascript">
|
||
|
||
//定义全局map变量
|
||
var map = null;
|
||
//定义地图ID变量
|
||
var mapID = '100930';
|
||
//定义循环的起始变量
|
||
var i = 0;
|
||
//创建存储标注的数组
|
||
var markerArr = [];
|
||
|
||
//定义点标注全局变量
|
||
var jsMarker = null;
|
||
|
||
window.onload = function () {
|
||
window.addEventListener('message', function (e) {
|
||
//加载地图
|
||
// console.info('地图加载完成')
|
||
// console.info(mapData)
|
||
openMap(e.data);
|
||
addBox(e.data);
|
||
addWall(e.data);
|
||
});
|
||
};
|
||
|
||
window.addEventListener('unload', function (e) {
|
||
//销毁地图
|
||
map.destroy();
|
||
map = null;
|
||
});
|
||
|
||
//打开地图
|
||
function openMap(mapData) {
|
||
//初始化参数
|
||
var mapOptions = {
|
||
//必要,地图容器
|
||
container: 'mapContainer',
|
||
//必要,地图类型
|
||
mapType: jsmap.JSMapType.MAP_3D,
|
||
//必要,地图路径
|
||
// mapServerURL: 'http://mapdemo.joysuch.com',
|
||
mapServerURL: 'http://192.168.192.201:7024/joysuch/jsmap/data/map',
|
||
mapScaleLevelRange: [15,20], //地图缩放范围,默认[1,24]
|
||
openingAnimation: false, // 是否开启开场动画,默认true
|
||
lightingColor: '#3C4040', // 光照颜色,修改3D地图以外地图的遮罩颜色
|
||
enableLighting: true, // 是否开启光照效果,默认false
|
||
enableShadows: true, // 是否开启阴影效果,默认false
|
||
showGlobe: true, // 是否显示地球,默认true(显示3D地图以外的地图)
|
||
showLoading: false, // 是否显示地图加载动画,默认true
|
||
viewOptions: {
|
||
center: {
|
||
x: mapData.LONGITUDE,
|
||
y: mapData.LATITUDE,
|
||
z: 0.016594102424956802
|
||
|
||
},
|
||
distance: 1600.01629618875734,
|
||
rotate: 270.01698302043945,
|
||
tilt: 60.002892467352007
|
||
},
|
||
imageryProvider: jsmap.JSImageryProviderType.IMAGE_TDT,
|
||
};
|
||
//初始化地图对象
|
||
map = new jsmap.JSMap(mapOptions);
|
||
|
||
//打开map服务器的地图数据和主题
|
||
map.openMapById(mapID);
|
||
|
||
//地图加载完成事件
|
||
map.on("loadComplete", e => {
|
||
var compassControl = new jsmap.JSCompassControl({
|
||
position: jsmap.JSControlPosition.LEFT_TOP,
|
||
offset: {
|
||
x: 10,
|
||
y: 20
|
||
}
|
||
});
|
||
|
||
var zoomControl = new jsmap.JSZoomControl({
|
||
position: jsmap.JSControlPosition.LEFT_TOP,
|
||
offset: {
|
||
x: 40,
|
||
y: 10
|
||
}
|
||
});
|
||
|
||
if (document.documentElement.clientWidth >= 600) {
|
||
map.addControl(compassControl);
|
||
map.addControl(zoomControl);
|
||
}
|
||
});
|
||
|
||
map.on('mapClickNode', event => {
|
||
if(event.properties){
|
||
var id = ''
|
||
for (const [name,value] of event.properties) {
|
||
id = value
|
||
}
|
||
if(id){
|
||
window.parent.postMessage({
|
||
params:{
|
||
id
|
||
}
|
||
},'*')
|
||
}
|
||
}
|
||
});
|
||
}
|
||
|
||
//添加标注
|
||
function addBox(data) {
|
||
for (let j = 0; j < data.boxList.length; j++) {
|
||
let mapData = data.boxList[j];
|
||
jsMarker = new jsmap.JSBoxMarker({
|
||
id: j,
|
||
position: mapData.position, //坐标
|
||
floorId: 1, //楼层id,默认为1(地面)
|
||
color: mapData.color, //颜色
|
||
height: 0, //基底高度
|
||
stretchHeight: mapData.stretchHeight, //拉伸高度
|
||
strokeColor: mapData.strokeColor, //边线颜色
|
||
strokeWidth: 4, //边线宽度
|
||
// properties: {
|
||
// id: mapData.id
|
||
// }, //属性设置
|
||
callback: (node) => {
|
||
// console.log(node);
|
||
} //回调事件
|
||
});
|
||
map.addMarker(jsMarker);
|
||
markerArr.push(jsMarker)
|
||
}
|
||
}
|
||
|
||
//添加标注
|
||
function addWall(data) {
|
||
let mapData = data.wallMap;
|
||
jsMarker = new jsmap.JSWallMarker({
|
||
id: 'wallMarker',
|
||
position: mapData.position, //坐标
|
||
floorId: 1, //楼层id,默认为1(地面)
|
||
color: 'rgb(139,71,137)', //颜色
|
||
closed: true, //墙是否闭合
|
||
baseHeight: 0, //基底高度
|
||
height: 20, //高度
|
||
wallType: jsmap.JSWallType.WAVE, //墙类型
|
||
callback: (node) => {
|
||
// console.log(node);
|
||
} //回调事件
|
||
});
|
||
map.addMarker(jsMarker);
|
||
markerArr.push(jsMarker)
|
||
}
|
||
|
||
</script>
|
||
</body>
|
||
|
||
</html>
|