1. 程式人生 > 其它 >Openlayers示例12 | Custom Overview Map(鷹眼圖)

Openlayers示例12 | Custom Overview Map(鷹眼圖)

Custom Overview Map

此示例演示如何使用其支援的選項以及定義自定義 CSS 來自定義鷹眼圖控制元件。您還可以使用 shift 鍵旋轉地圖以檢視鷹眼圖的反應。

<!DOCTYPE html>
<html lang="zn">

<head>
  <meta charset="UTF-8">
  <!-- 引入OpenLayers CSS樣式 -->
  <link rel="stylesheet"
    href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.13.0/css/ol.css">
  <!-- 引入OpenLayers JS庫 -->
  <script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.13.0/build/ol.js"></script>
  <!-- css程式碼 -->
  <style>
    .map {
      width: 100%;
      height: 500px;
    }

    .map .ol-custom-overviewmap,
    .map .ol-custom-overviewmap.ol-uncollapsible {
      bottom: auto;
      left: auto;
      right: 0;
      top: 0;
    }

    .map .ol-custom-overviewmap:not(.ol-collapsed) {
      border: 1px solid black;
    }

    .map .ol-custom-overviewmap .ol-overviewmap-map {
      border: none;
      width: 300px;
    }

    .map .ol-custom-overviewmap .ol-overviewmap-box {
      border: 2px solid red;
    }

    .map .ol-custom-overviewmap:not(.ol-collapsed) button {
      bottom: auto;
      left: auto;
      right: 1px;
      top: 1px;
    }

    .map .ol-rotate {
      top: 170px;
      right: 0;
    }
  </style>
  <title>Custom Overview Map</title>
</head>
<body>
  <div id="map" class="map"></div>
  <div><label><input type="checkbox" id="rotateWithView"> Rotate with view</label></div>
</body>
<script>
  const rotateWithView = document.getElementById('rotateWithView');

  const overviewMapControl = new ol.control.OverviewMap({
    // 檢視overviewmap-custom.html中使用的自定義CSS
    className: 'ol-overviewmap ol-custom-overviewmap',
    layers: [
      new ol.layer.Tile({
        source:new ol.source.OSM()
        // source: new ol.source.OSM({
        //   'url':
        //     'https://{a-c}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png' +
        //     '?apikey=Your API key from https://www.thunderforest.com/docs/apikeys/ here',
        // }),
      }),
    ],
    collapseLabel: '\u00BB',
    label: '\u00AB',
    collapsed: false,
  });

  rotateWithView.addEventListener('change', function () {
    overviewMapControl.setRotateWithView(this.checked);
  });

  const map = new ol.Map({
    controls: ol.control.defaults().extend([overviewMapControl]),
    interactions: ol.interaction.defaults().extend([new ol.interaction.DragRotateAndZoom()]),
    layers: [
      new ol.layer.Tile({
        source: new ol.source.OSM(),
      }),
    ],
    target: 'map',
    view: new ol.View({
      center: [500000, 6000000],
      zoom: 7,
    }),
  });
</script>
</html>