如何使用 mapbox-gl FullscreenButton 扩展 class

How to extend a class with mapbox-gl FullscreenButton

我想包装标准的 mapbox-gl FullscreenButton,请参阅 here,以添加以下功能:

  1. needsclick 应该添加到按钮 class 以避免 Fastclick 错误。
  2. 按钮不是让地图容器全屏显示,而是 应该使整个文档页面全屏显示(其他 div 也是如此 等)。

我尝试了以下方法:fiddle。在代码将 运行 和地图显示之前,您首先必须以某种方式在 ES6/Babel window 中点击 return...

我 运行 遇到的问题:

  1. onAdd”方法以某种方式触发此错误:

"TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'. at e.addControl (https://api.tiles.mapbox.com/mapbox-gl-js/v0.36.0/mapbox-gl.js:390:3490) at jekuwak.js:69:5"

2。 1 解决后(我通过 Chrome Devtools 添加 needsclick 来解决),触发 this._mapContainer.webkitRequestFullscreen()

我要更改什么才能全屏显示整个页面,而不仅仅是地图容器?

对于#1:

const fs = new mapboxgl.FullscreenControl();
map.addControl(fs)
fs._fullscreenButton.classList.add('needsclick');

对于 #2:

FullscreenControl 无法以这种方式扩展——它被设计为在地图 canvas 上运行,更改它可能比从头开始编写您想要的功能更麻烦。如果你想让你的整个 window 全屏,我建议你独立于 mapboxgl 实现全屏功能。如果您希望能够使用 mapboxgl 提供的图标,您可以将适当的 CSS 类 添加到您创建的元素中。