赞
踩
下载hls.js
http://mars3d.cn/lib/video/hls/hls.js下载
1.首先绘制地图我使用的天地图
async infoMars3d() { const that = this; var mapOptions = { scene: { center: { lat: 30.435192, lng: 103.936535, alt: 200000, heading: 359, pitch: -79 }, highDynamicRange: false }, // 方式1:在创建地球前的参数中配置 basemaps: [ { name: "天地图影像(EPSG:4326)", icon: "img/basemaps/tdt_img.png", type: "group", show: true, layers: [ { name: "底图", type: "tdt", layer: "img_d", crs: "EPSG:4326", // key: mars3d.Token.tiandituArr key: ["xxxx"] }, { name: "注记", type: "tdt", layer: "img_z", crs: "EPSG:4326", // key: mars3d.Token.tiandituArr key: ["xxxx"] } ] } ] }; this.map = await new mars3d.Map("videoTreesmap", mapOptions); // 创建矢量数据图层 graphicLayer = await new mars3d.layer.GraphicLayer(); this.map.addLayer(graphicLayer); this.map.bindContextMenu([]); //地图加载完成 this.map.on(mars3d.EventType.load, function(event) { //绘制省边线地图--以前文章有提到 that.addDemoGraphics(); //绘制视频点 that.ArcGisWfs(); }); },
2.绘制视频点–使用DivGraphic
准备一组数据
urlsList= [{
name: “XXX”,
url: “xxx./hls.m3u8”,
poster: “/poster/XXX.jpg”,
addressLatitude: “30.899118”,
addressLongitude: “103.593783”
},…]
ArcGisWfs() { const that = this; if (!this.map) return; graphicLayer.clear(); graphicLayer.enabledEvent = false; // 关闭事件,大数据addGraphic时影响加载时间 const result = this.urlsList; const graphicLayers = new mars3d.layer.GraphicLayer(); this.map.addLayer(graphicLayers); for (let j = 0; j < result.length; ++j) { const index = j + 1; // 添加数据 const graphic = that.addRandomGraphicByCount( graphicLayers, [result[j].addressLongitude, result[j].addressLatitude, 0], result[j], index ); } graphicLayer.enabledEvent = true; // 恢复事件 that.goToUrl(result[0]); return result.length; }, addRandomGraphicByCount(graphicLayer, position, result, index) { const that = this; // 标点icon图片 const srcImg = require("../../assets/images/icon-sssp.png"); const graphicImg = new mars3d.graphic.DivGraphic({ position, style: { html: ` <div class="mars3d-camera-content"> <img class="mars3d-camera-img" style="width: 40px;height:40px" src=${srcImg} > </div> <div class="mars3d-camera-line" ></div> <div class="mars3d-camera-point"></div> `, offsetX: -18, visibleDepth: true } popup: `<div style="width: 450px;text-align:center;font-size:15px;">${result.name}</div><video style="width: 450px;height:300px;" id="videoHLS" muted="muted" autoplay="autoplay" loop="loop" crossorigin="" controls=""> </video>`, popupOptions: { offsetY: -50, // 显示Popup的偏移值,是DivGraphic本身的像素高度值 template: `<div class="marsBlackPanel animation-spaceInDown"> <div class="marsBlackPanel-text">{content}</div> <div></div> <span class="mars3d-popup-close-button closeButton" style="color:#FFF" >×</span> </div>`, horizontalOrigin: Cesium.HorizontalOrigin.LEFT, verticalOrigin: Cesium.VerticalOrigin.CENTER } }); graphicLayer.addGraphic(graphicImg); graphicImg.on(mars3d.EventType.click, function(event) { const videoElement = event.container.querySelector("#videoHLS"); // popup对应的DOM if (window.Hls.isSupported()) { const hls = new window.Hls(); console.log(window.Hls); hls.loadSource(hlsUrl); hls.attachMedia(videoElement); hls.on(window.Hls.Events.MANIFEST_PARSED, function() { videoElement.play(); }); } else if (videoElement.canPlayType("application/vnd.apple.mpegurl")) { videoElement.src = hlsUrl; videoElement.addEventListener("loadedmetadata", function() { videoElement.play(); }); } }); },
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。