Как добавить WMS в OpenLayers 5.3.0? - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь интегрировать наложение WMS на мою карту OpenLayers по умолчанию.Используя только слой ol.source.OSM({}), карта отображается хорошо, но когда я добавляю слой WMS в массив layers: [], он просто дает мне пустую карту.Я использую следующий код, но он не работает, что мне нужно изменить?

<!doctype html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/css/ol.css" type="text/css">
    <style>
      .map {
        height: 100%;
        width: 100%;
      }
    </style>
    <script src="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/build/ol.js"></script>
    <title>OpenLayers example</title>
  </head>
  <body>
    <h2>WMS Map</h2>
    <div id="map" class="map"></div>
    <script type="text/javascript">
      var map = new ol.Map({
        target: 'map',
        layers: [
            new ol.layer.Tile(
                {
                    source: new ol.source.OSM({})
                }),
            new ol.layer.ImageWMS(
                {
                    source: new ol.source.ImageWMS(
                    {
                        url: 'http://www.igeo.pt/WMS/Geologia/CGP1M'
                    })
                })
        ],
        view: new ol.View(
            {
                center: ol.proj.fromLonLat([37.41, 8.82]),
                zoom: 4
            })
      });
    </script>
  </body>
</html>

1 Ответ

0 голосов
/ 24 января 2019

Вы можете посмотреть на GetCapabilities для этого URL http://www.igeo.pt/WMS/Geologia/CGP1M?SERVICE=WMS&REQUEST=GetCapabilities. Имеется 17 слоев с именами от 1 до 20 (3, 13 и 18 отсутствуют) с описаниями на португальском языке.В маловероятном случае, если вы захотите, чтобы все настройки были такими, как показано ниже (обратите внимание, что конструктор слоя просто ol.layer.Image, порядок Lon / Lat, и я сделал его полупрозрачным, чтобы фон все еще был виден)

        new ol.layer.Tile(
            {
                source: new ol.source.OSM({})
            }),
        new ol.layer.Image(
            {
                source: new ol.source.ImageWMS(
                {
                    url: 'http://www.igeo.pt/WMS/Geologia/CGP1M',
                    params: { LAYERS: '1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,19,20'}
                }),
                opacity: 0.5
            })
    ],
    view: new ol.View(
        {
            center: ol.proj.fromLonLat([-8.82, 37.41]),
            zoom: 4
        })

На полноэкранной карте обычно более эффективно запрашивать WMS в плиточных областях, чтобы избежать непрерывного запроса всей области при панорамировании

        new ol.layer.Tile(
            {
                source: new ol.source.TileWMS(
                {
                    url: 'http://www.igeo.pt/WMS/Geologia/CGP1M',
                    params: { LAYERS: '1,2,4,5,6,7,8,9,10,11,12,14,15,16,17,19,20'}
                }),
                opacity: 0.5
            })
...