<!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>