<!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="jsmap/3D/jsmap.js"></script>-->
<!--  <link type="text/css" rel="stylesheet" href="jsmap/3D/jsmap.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';
	var mapID3D = '9999';

	let maxFloors = 5;


  window.onload = function () {
    //加载地图
    initMap();
    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() {
		openMap2D();
		// openMap3D();
	}
  //打开地图
  function openMap2D() {
    //初始化参数
    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);

    //地图加载完成事件
    map.on("loadComplete", e => {
      var zoomControl = new jsmaplight.JSZoomControl({
        position: jsmaplight.JSControlPosition.LEFT_TOP,
        offset: {
          x: 10,
          y: 10
        }
      });

      var floorControl = new jsmaplight.JSFloorControl({
        position: jsmaplight.JSControlPosition.RIGHT_TOP,
        showBtnCount: 7,
        offset: {
          x: 20,
          y: 20
        }
      });

      if (document.documentElement.clientWidth >= 992) {
        map.addControl(floorControl);
        map.addControl(zoomControl);
      }
    });


	map.on('mapClickNode', event => {
		addPointMarker2D(event);
		backWithResult(event);
	});
  }

  function openMap3D() {
	//初始化参数
	var mapOptions = {
		//必要,地图容器
		container: 'mapContainer',
		//必要,地图类型
		mapType: jsmap.JSMapType.MAP_3D,
		//必要,地图路径
		mapServerURL: "jsmap/3D/data/map",
		viewOptions: {
		  center: {
			x: 119.65549893659012,
			y: 39.9351098623569,
			z: 0.016594102424956802
		  },
		  distance: 370.01629618875734,
		  rotate: 0,
		  tilt: 90
		},
        openingAnimation: false,
        showGlobe: true,
	    imageryProvider: jsmap.JSImageryProviderType.IMAGE_TDT,
        showLoading:false
	};
	//初始化地图对象
	map = new jsmap.JSMap(mapOptions);

	//打开map服务器的地图数据和主题
	map.openMapById(mapID3D);

	//地图加载完成事件
	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 >= 992) {
			map.addControl(compassControl);
			map.addControl(zoomControl);
		}
	});

	map.on('mapClickNode', event => {
		addPointMarker3D(event);
		backWithResult(event);
	});
  }

  //添加标注
  function addPointMarker2D(event) {
    map.removeAllDomMarker();   //移除全部标注
    var pointMarker = new jsmaplight.JSDomMarker({
		id: 0,
		position: {
			x: event.eventInfo.coord.x,
			y: event.eventInfo.coord.y,
			z: 1
		}, //坐标
		pointerEvents: 'none',
		content: '<div class="jsmap-animation-point" style="color: blue"><p></p></div>',
		offset: jsmaplight.JSControlPosition.LEFT_BOTTOM,
		marginOffset: {
			x: 0,
			y: 0
		},
		properties: {
			type: 0
		},
		callback: (node) => {
			console.log(node);
		}
    });
    map.addMarker(pointMarker);
  }

  //添加标注
  function addPointMarker3D(event) {
    map.removeAllDomMarker();   //移除全部标注
    var pointMarker = new jsmap.JSDomMarker({
		id: 0,
		position: {
			x: event.eventInfo.coord.x,
			y: event.eventInfo.coord.y,
			z: 1
		}, //坐标
		pointerEvents: 'none',
		content: '<div class="jsmap-animation-point" style="color: blue"><p></p></div>',
		offset: jsmap.JSControlPosition.LEFT_BOTTOM,
		marginOffset: {
			x: 0,
			y: 0
		},
		properties: {
			type: 0
		},
		callback: (node) => {
			console.log(node);
		}
    });
    map.addMarker(pointMarker);
  }

  function backWithResult(event){
    uni.postMessage({
      data:{
        "longitue":event.x,
        "latitude":event.y,
        "floorId" :event.floorId
      }

    })
  }

</script>

<style type="text/css">
  html,
  body,
  #mapContainer {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    overflow: hidden;
  }

</style>
</html>