<!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 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.192.201:7024/joysuch/jsmap/data/map', mapScaleLevelRange: [15,20], //地图缩放范围,默认[1,24] 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>