OpenLayer stati c Атрибуция в левом нижнем углу карты - PullRequest
1 голос
/ 13 марта 2020

Я использую OpenLayer с возможностью переключения с двух разных базовых слоев. Итак, у меня разные атрибуты для каждого слоя (в виде ссылок) в правом нижнем углу карты.

Можно ли добавить еще один атрибут (ссылку) в левом нижнем углу карты? Мне нужно, чтобы этот атрибут распределялся между всеми слоями (мне не нужно менять его при переключении слоя)

1 Ответ

0 голосов
/ 13 марта 2020

Вы можете установить метку общей атрибуции для переменной, а затем добавить ее к атрибутам слоев. Посмотрите на этот пример, который я сделал для вас, изменив одну из OL, в примере, который я использую в качестве общей атрибуции атрибуцию OSM.

<!doctype html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.2.1/css/ol.css" type="text/css">
    <style>
      .map {
        height: 400px;
        width: 100%;
      }
    </style>
    <script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.2.1/build/ol.js"></script>
    <title>Attributions</title>
  </head>
  <body>
    <h2>Attributions</h2>
    <button onclick="switchMap()">Switch Map</button>
    <div id="map" class="map"></div>
    <script type="text/javascript">
      var osm = new ol.layer.Tile({
        source: new ol.source.OSM({
          attributions: [
            'All maps © <a href="https://www.opencyclemap.org/">OpenCycleMap</a>',
            ol.source.OSM.ATTRIBUTION
          ]
        })
      });
      var openSeaMapLayer = new ol.layer.Tile({
        source: new ol.source.OSM({
          attributions: [
            'All maps © <a href="http://www.openseamap.org/">OpenSeaMap</a>',
            ol.source.OSM.ATTRIBUTION
          ],
          opaque: false,
          url: 'https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png'
        }),
        visible: false
      });
      var map = new ol.Map({
        target: 'map',
        layers: [
          osm,
          openSeaMapLayer
        ],
        view: new ol.View({
          center: [-244780.24508882355, 5986452.183179816],
          zoom: 18
        })
      });
      function switchMap() {
        openSeaMapLayer.setVisible(!openSeaMapLayer.getVisible());
        osm.setVisible(!osm.getVisible());
      };
    </script>
  </body>
</html>
...