479 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
		
		
			
		
	
	
			479 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
|  | 
 | |||
|  | <!DOCTYPE html> | |||
|  | <html> | |||
|  | 
 | |||
|  | <head> | |||
|  |   <meta charset="utf-8"/> | |||
|  |   <title>hello-jsmap</title> | |||
|  |   <script src="http://192.168.0.31:8089/joysuch/jsmap/jsmap.js" type="text/javascript"></script> | |||
|  |   <link type="text/css" href="http://192.168.0.31:8089/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.0.31:8089/joysuch/LocalAssets/css/animation/pop.css"> | |||
|  |   <link rel="stylesheet" href="http://192.168.0.31:8089/joysuch/LocalAssets/css/animation/loading.css"> | |||
|  |   <link rel="stylesheet" href="http://192.168.0.31:8089/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 domMarker = null; | |||
|  | 
 | |||
|  |   window.onload = function () { | |||
|  |     window.addEventListener('message', function (e) { | |||
|  |       //加载地图 | |||
|  |       // console.info('地图加载完成') | |||
|  |       // console.info(mapData) | |||
|  |       openMap(e.data); | |||
|  |       add(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.0.31:8089/joysuch/jsmap/data/map', | |||
|  |       openingAnimation: false, | |||
|  |       enableLighting: true, | |||
|  |       enableShadows: true, | |||
|  |       viewOptions: { | |||
|  |         center: { | |||
|  |           x: Number(mapData.longitude), | |||
|  |           y: Number(mapData.latitude), | |||
|  |           z: 0.016594102424956802 | |||
|  | 
 | |||
|  |         }, | |||
|  |         distance: 370.01629618875734, | |||
|  |         rotate: 0, | |||
|  |         tilt: 90 | |||
|  |       }, | |||
|  |       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); | |||
|  |       } | |||
|  |     }); | |||
|  |   } | |||
|  | 
 | |||
|  |   //添加标注 | |||
|  |   function add(mapData) { | |||
|  |     var content = '<div>' + | |||
|  |       '<div class="wrapper">' + | |||
|  |       '<div class="row cf">' + | |||
|  |       '<div class="span">' + | |||
|  |       '<div class="location_indicator"></div>' + | |||
|  |       '</div>' + | |||
|  |       '</div>' + | |||
|  |       '</div>' + | |||
|  |       '</div>' + | |||
|  |       '<div>' + | |||
|  |       '<div class="divpoint divpoint-theme-29baf1">' + | |||
|  |       '<div class="divpoint-wrap">' + | |||
|  |       '<div class="area">' + | |||
|  |       '<div class="arrow-lt"></div>' + | |||
|  |       '<div class="b-t"></div>' + | |||
|  |       '<div class="b-r"></div>' + | |||
|  |       '<div class="b-b"></div>' + | |||
|  |       '<div class="b-l"></div>' + | |||
|  |       '<div class="arrow-rb"></div>' + | |||
|  |       '<div class="label-wrap">' + | |||
|  |       '<div class="title">' + mapData.name + '</div>' + | |||
|  |       '<div class="label-content">'; | |||
|  |     if (mapData.number) { | |||
|  |       content += | |||
|  |         '<div class="data-li">' + | |||
|  |         '<div class="data-label">编号:</div>' + | |||
|  |         '<div class="data-value">' + | |||
|  |         '<span class="label-tag data-value-status-1">' + mapData.number + '</span>' + | |||
|  |         '</div>' + | |||
|  |         '</div>'; | |||
|  |     } | |||
|  |     if (mapData.workcontent) { | |||
|  |       content += | |||
|  |         '<div class="data-li">' + | |||
|  |         '<div class="data-label">作业内容:</div>' + | |||
|  |         '<div class="data-value">' + | |||
|  |         '<span class="label-tag data-value-status-1">' + mapData.workcontent + '</span>' + | |||
|  |         '</div>' + | |||
|  |         '</div>'; | |||
|  |     } | |||
|  |     if (mapData.address) { | |||
|  |       content += | |||
|  |         '<div class="data-li">' + | |||
|  |         '<div class="data-label">地址:</div>' + | |||
|  |         '<div class="data-value">' + | |||
|  |         '<span class="label-tag data-value-status-1">' + mapData.address + '</span>' + | |||
|  |         '</div>' + | |||
|  |         '</div>'; | |||
|  |     } | |||
|  |     content += | |||
|  |       '<div class="data-li">' + | |||
|  |       '<div class="data-label">经度:</div>' + | |||
|  |       '<div class="data-value">' + | |||
|  |       '<span class="label-num">' + mapData.longitude + '</span>' + | |||
|  |       '</div>' + | |||
|  |       '</div>' + | |||
|  |       '<div class="data-li">' + | |||
|  |       '<div class="data-label">纬度:</div>' + | |||
|  |       '<div class="data-value">' + | |||
|  |       '<span class="label-num">' + mapData.latitude + '</span>' + | |||
|  |       '</div>' + | |||
|  |       '</div>' + | |||
|  |       '</div>' + | |||
|  |       '</div>' + | |||
|  |       '</div>' + | |||
|  |       '<div class="b-t-l"></div>' + | |||
|  |       '<div class="b-b-r"></div>' + | |||
|  |       '</div>' + | |||
|  |       '<div class="arrow"></div>' + | |||
|  |       '</div>' + | |||
|  |       '</div>'; | |||
|  |     domMarker = new jsmap.JSDomMarker({ | |||
|  |       id: i, | |||
|  |       position: { | |||
|  |         x: Number(mapData.longitude), | |||
|  |         y: Number(mapData.latitude), | |||
|  |         z: 1 | |||
|  |       }, //坐标 | |||
|  |       floorId: 1, //楼层id,默认为1(地面) | |||
|  |       pointerEvents: 'none', | |||
|  |       content: content, | |||
|  |       offset: jsmap.JSControlPosition.LEFT_BOTTOM, | |||
|  |       marginOffset: { | |||
|  |         x: 0, | |||
|  |         y: 0 | |||
|  |       }, | |||
|  |       properties: { | |||
|  |         type: 0, | |||
|  |       },//属性设置 | |||
|  |       callback: (node) => { | |||
|  |         // console.log(node); | |||
|  |       } //回调事件 | |||
|  |     }); | |||
|  |     map.addMarker(domMarker); | |||
|  |   } | |||
|  | 
 | |||
|  | </script> | |||
|  | </body> | |||
|  | 
 | |||
|  | </html> |