关键词搜索

源码搜索 ×
×

Leaflet文档阅读笔记- Showing video files解析

发布2019-09-16浏览4338次

详情内容

目录

 

 

官方解析

博主例子


 

官方解析

这里,官方首先告诉我们,当<video>这个标签还没出现的时候,在web上展示视频是很艰巨的。现在有了这个标签,只需要如下代码就能在web页面上展示视频:

  1. <video width="500" controls>
  2. <source src="https://www.mapbox.com/bites/00188/patricia_nasa.webm" type="video/webm">
  3. <source src="https://www.mapbox.com/bites/00188/patricia_nasa.mp4" type="video/mp4">
  4. </video>

想在Leaflet上放视频,先得加载一个地图

  1. var map = L.map('map').setView([37.8, -96], 4);
  2. L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=' + mapboxAccessToken, {
  3. id: 'mapbox.satellite',
  4. attribution: ...
  5. }).addTo(map);

随后画一个放视频的矩形,放到地图上

  1. var bounds = L.latLngBounds([[ 32, -130], [ 13, -100]]);
  2. L.rectangle(bounds).addTo(map);
  3. map.fitBounds(bounds);

使用videoOverlay函数把视频放到刚刚画的矩形上!

  1. var videoUrls = [
  2. 'https://www.mapbox.com/bites/00188/patricia_nasa.webm',
  3. 'https://www.mapbox.com/bites/00188/patricia_nasa.mp4'
  4. ];
  5. var bounds = L.latLngBounds([[ 32, -130], [ 13, -100]]);
  6. var videoOverlay = L.videoOverlay( videoUrls, bounds, {
  7. opacity: 0.8
  8. }).addTo(map);

加一个播放和停止按钮

videoOverlay并没有提供play()和pause()的API。

需要调用getElement(),然后才能调用play()以及pause()

  1. videoOverlay.on('load', function () {
  2. var MyPauseControl = L.Control.extend({
  3. onAdd: function() {
  4. var button = L.DomUtil.create('button');
  5. button.innerHTML = '⏸';
  6. L.DomEvent.on(button, 'click', function () {
  7. videoOverlay.getElement().pause();
  8. });
  9. return button;
  10. }
  11. });
  12. var MyPlayControl = L.Control.extend({
  13. onAdd: function() {
  14. var button = L.DomUtil.create('button');
  15. button.innerHTML = '⏵';
  16. L.DomEvent.on(button, 'click', function () {
  17. videoOverlay.getElement().play();
  18. });
  19. return button;
  20. }
  21. });
  22. var pauseControl = (new MyPauseControl()).addTo(map);
  23. var playControl = (new MyPlayControl()).addTo(map);
  24. });

这样就增加了播放和暂停按钮了。

 

博主例子

下面在自定义地图上播放视频!

程序运行截图如下:

源码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>video</title>
  5. <meta charset="utf-8" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <link rel="stylesheet" href="leaflet.css" />
  8. <script src="leaflet.js"></script>
  9. <script src="leaflet-tilelayer-wmts-src.js"></script>
  10. <style>
  11. html, body {
  12. height: 100%;
  13. margin: 0;
  14. }
  15. #map {
  16. width: 100%;
  17. height: 100%;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <div id='map'></div>
  23. <script type="text/javascript">
  24. var ign = new L.TileLayer.WMTS( "http://XXX.XXX.XXX.XXX:8080/geoserver/gwc/service/wmts" ,
  25. {
  26. layer: 'GG_9:gg_9',
  27. tilematrixset: "EPSG:900913",
  28. Format : 'image/png',
  29. TileMatrix: 'EPSG:900913:8'
  30. }
  31. );
  32. var map = L.map('map', {
  33. minZoom: 4,
  34. maxZoom: 7
  35. }).setView([32, 118], 7);
  36. L.control.scale({'position':'bottomleft','metric':true,'imperial':false}).addTo(map);
  37. map.addLayer(ign);
  38. map.invalidateSize(true);
  39. //添加的数据
  40. /*
  41. var popup = L.popup();
  42. function onMapClick(e){
  43. popup.setLatLng(e.latlng).setContent(e.latlng.toString()).openOn(map);
  44. }
  45. map.on('click', onMapClick);
  46. */
  47. bounds = L.latLngBounds([[35.083, 111.467], [31.419, 120.344]]);
  48. L.rectangle(bounds).addTo(map);
  49. map.fitBounds(bounds);
  50. var videoUrls = [
  51. 'https://vfx.mtime.cn/Videohttps://cdn.jxasp.com:9143/image/2019/01/15/mp4/190115161611510728_480.mp4'
  52. ];
  53. var overlay = L.videoOverlay(videoUrls, bounds, {
  54. opacity: 0.8,
  55. interactive: false,
  56. autoplay: true
  57. });
  58. map.addLayer(overlay);
  59. overlay.on('load', function () {
  60. var MyPauseControl = L.Control.extend({
  61. onAdd: function() {
  62. var button = L.DomUtil.create('button');
  63. button.innerHTML = '暂停';
  64. L.DomEvent.on(button, 'click', function () {
  65. overlay.getElement().pause();
  66. });
  67. return button;
  68. }
  69. });
  70. var MyPlayControl = L.Control.extend({
  71. onAdd: function() {
  72. var button = L.DomUtil.create('button');
  73. button.innerHTML = '播放';
  74. L.DomEvent.on(button, 'click', function () {
  75. overlay.getElement().play();
  76. });
  77. return button;
  78. }
  79. });
  80. var pauseControl = (new MyPauseControl()).addTo(map);
  81. var playControl = (new MyPlayControl()).addTo(map);
  82. });
  83. //添加的数据
  84. </script>
  85. </body>
  86. </html>

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载