openlayer Overlay

弹出窗口是使用Bootstrap中的Popovers创建的。

<!DOCTYPE html><html>

  <head>

    <title>Overlay</title>

    <link rel="stylesheet" href="https://openlayers.org/en/v5.1.3/css/ol.css" type="text/css">

    <!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->

    <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>

    <script src="https://code.jquery.com/jquery-2.2.3.min.js"></script>

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">

    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

    <style>

      #marker {

        width: 20px;

        height: 20px;

        border: 1px solid #088;

        border-radius: 10px;

        background-color: #0FF;

        opacity: 0.5;

      }

      #vienna {

        text-decoration: none;

        color: white;

        font-size: 11pt;

        font-weight: bold;

        text-shadow: black 0.1em 0.1em 0.2em;

      }

      .popover-content {

        min-width: 180px;

      }

    </style>

  </head>

  <body>

    <div id="map" class="map"></div>

    <div style="display: none;">

      <!-- Clickable label for Vienna -->

      <a class="overlay" id="vienna" target="_blank" href="http://en.wikipedia.org/wiki/Vienna">Vienna</a>

      <div id="marker" title="Marker"></div>

      <!-- Popup -->

      <div id="popup" title="Welcome to OpenLayers"></div>

    </div>

    <script>

      import Map from 'ol/Map.js';

      import Overlay from 'ol/Overlay.js';

      import View from 'ol/View.js';

      import {toStringHDMS} from 'ol/coordinate.js';

      import TileLayer from 'ol/layer/Tile.js';

      import {fromLonLat, toLonLat} from 'ol/proj.js';

      import OSM from 'ol/source/OSM.js';

 

 

      var layer = new TileLayer({

        source: new OSM()

      });

 

      var map = new Map({

        layers: [layer],

        target: 'map',

        view: new View({

          center: [0, 0],

          zoom: 2

        })

      });

 

      var pos = fromLonLat([16.3725, 48.208889]);

 

      // Vienna marker

      var marker = new Overlay({

        position: pos,

        positioning: 'center-center',

        element: document.getElementById('marker'),

        stopEvent: false

      });

      map.addOverlay(marker);

 

      // Vienna label

      var vienna = new Overlay({

        position: pos,

        element: document.getElementById('vienna')

      });

      map.addOverlay(vienna);

 

      // Popup showing the position the user clicked

      var popup = new Overlay({

        element: document.getElementById('popup')

      });

      map.addOverlay(popup);

 

      map.on('click', function(evt) {

        var element = popup.getElement();

        var coordinate = evt.coordinate;

        var hdms = toStringHDMS(toLonLat(coordinate));

 

        $(element).popover('destroy');

        popup.setPosition(coordinate);

        $(element).popover({

          placement: 'top',

          animation: false,

          html: true,

          content: '<p>The location you clicked was:</p><code>' + hdms + '</code>'

        });

        $(element).popover('show');

      });

    </script>

  </body></html>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值