Edit

Full Screen Control with extended source element

full-screen3 source2 fullScreenSource1 osm4 osm-maps1

Side Panel

Example of a full screen control with a source option definition.

Click the control in the top right corner to go full screen. Click it again to exit full screen.

If there is no button on the map, your browser does not support the Full Screen API.

main.js
import 'ol/ol.css';
import Map from 'ol/Map';
import OSM from 'ol/source/OSM';
import TileLayer from 'ol/layer/Tile';
import View from 'ol/View';
import {FullScreen, defaults as defaultControls} from 'ol/control';

var view = new View({
  center: [-9101767, 2822912],
  zoom: 14,
});

var map = new Map({
  controls: defaultControls().extend([
    new FullScreen({
      source: 'fullscreen',
    }) ]),
  layers: [
    new TileLayer({
      source: new OSM(),
    }) ],
  target: 'map',
  view: view,
});
index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Full Screen Control with extended source element</title>
    <!-- Pointer events polyfill for old browsers, see https://caniuse.com/#feat=pointer -->
    <script src="https://unpkg.com/elm-pep"></script>
    <style>
      .map {
        width: 100%;
        height:400px;
      }
      .fullscreen:-webkit-full-screen {
        height: 100%;
        margin: 0;
      }
      .fullscreen:-ms-fullscreen {
        height: 100%;
      }

      .fullscreen:fullscreen {
        height: 100%;
      }

      .fullscreen {
        margin-bottom: 10px;
        width: 100%;
        height: 400px;
      }

      .map .ol-rotate {
        top: 3em;
      }

      .map {
        width: 80%;
        height: 100%;
        float: left;
      }

      .sidepanel {
        background: #1F6B75;
        width: 20%;
        height: 100%;
        float: left;
      }

      .sidepanel-title {
        width: 100%;
        font-size: 3em;
        color: #ffffff;
        display: block;
        text-align: center;
      }
    </style>
  </head>
  <body>
    <div id="fullscreen" class="fullscreen">
      <div id="map" class="map"></div>
      <div class="sidepanel">
        <span class="sidepanel-title">Side Panel</span>
      </div>
    </div>

    <script src="main.js"></script>
  </body>
</html>
package.json
{
  "name": "full-screen-source",
  "dependencies": {
    "ol": "6.4.3"
  },
  "devDependencies": {
    "parcel": "1.11.0"
  },
  "scripts": {
    "start": "parcel index.html",
    "build": "parcel build --experimental-scope-hoisting --public-url . index.html"
  }
}