Popup【气泡窗口】
index.html
<!DOCTYPE html>
<html>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>控件与UI组件 - Popup【气泡窗口】</title>
  <link rel="icon" href="/examples/static/resource/image/favicon.png" />
  <style type="text/css">
    html,body{margin:0px;height:100%;width:100%}
    .container{width:100%;height:100%}
    .pane{line-height:28px;color:#fff;z-index:1000;position:absolute;top:20px;right:20px}
    .pane a{display:block;color:#fff;text-align:center;padding:0 10px;min-width:28px;min-height:28px;float:left;background:#34495e}
    .pane a:hover{background:#1bbc9b}
    .pane a + a{border-left:1px solid #425568}
    .action{margin:0 8px}
  </style>
  <link rel="stylesheet" href="//rd.sz-map.com/libs/gm/gl/gl.min.css">
  <script type="text/javascript" src="//rd.sz-map.com/libs/gm/gl/gl.min.js"></script>
  <body>
    
    <div id="map" class="container"></div>
    <div class="pane">
      <a href="javascript:void(0);" onclick="controlPopup();">打开Popup</a>
      <a href="javascript:void(0);" onclick="controlPopup(true);">关闭Popup</a>
    </div>

    <script>
      function initMap() {
        this.map = new GL.Map('map', {
          center: '120.650847,31.3092434',
          zoomControl: false,
          scaleControl: false
        });
      
        var crs = {"resolutions":[0.0009765664903423653,0.0004882832451711827,0.00024414162258559134,0.00012207081129279567,0.00006103540564766688,0.000030517702822564394,0.000015258851412551242,0.000007629425705006574,0.000003814712853772333,0.00000190735154359766],"origin":"119.75,32.25"};
        var options = {"maxBounds":"119.89,30.75;121.406,32.08","preview":"/examples/static/images/preview.png"};
      
        var baseLayer = GL.LayerLookup.createGaeaTiledLayer(
          'http://119.3.130.139/tiles/vector_pc/_alllayers',
          Object.assign({}, options, {zIndex: 3}),
          crs
        );
        this.map.addBaseLayer(baseLayer);
      
        drawOverlay();
      }
      
      function drawOverlay() {
        this.vectorLayer = new GL.VectorLayer();
        this.map.addLayer(this.vectorLayer);
      
        this.point = new GL.Point(
          [120.58105869, 31.30115627],
          new GL.Icon.Smart('/examples/static/icons/0001.png', [32, 32])
        );
        this.vectorLayer.addOverlay(point);
        var pop = new GL.Popup();
        pop.setContent(createPointPopupContent);
        pop.setAttachmentContent('<div style="color: red;">点位Popup附属框</div>');
        point.bindPopup(pop);
      
        this.polygon = new GL.Polygon(
          '120.6114,31.27683;120.6666,31.23761;120.57162,31.21344',
          new GL.Style.Fill({ fillColor: '#afc333' }, true)
        );
        this.vectorLayer.addOverlay(polygon);
        var pop2 = new GL.Popup();
        pop2.setContent(createPointPopupContent);
        pop2.setAttachmentContent(
          '测试Popup<div style="width:0px;height:0px;border-left:50px solid #060;border-right:50px solid #600;border-bottom:50px solid #f00;border-top:50px solid #00f;"></div>'
        );
        polygon.bindPopup(pop2);
      }
      
      function controlPopup(close) {
        if (close) {
          polygon.closePopup();
        } else {
          polygon.openPopup();
        }
      }
      
      function createPointPopupContent(geometry) {
        var div = GL.DomUtil.create('div');
        var a1 = GL.DomUtil.create('a', 'action', div);
        var a2 = GL.DomUtil.create('a', 'action', div);
        var a3 = GL.DomUtil.create('a', 'action', div);
        var a4 = GL.DomUtil.create('a', 'action', div);
        a1.href = 'javascript:void(0);';
        a1.innerText = '打开附属框';
        a2.href = 'javascript:void(0);';
        a2.innerText = '关闭附属框';
        a3.href = 'javascript:void(0);';
        a3.innerText = '更改附属框位置';
        a4.href = 'javascript:void(0);';
        a4.innerText = '设置附属框内容';
      
        GL.DomEvent.on(a1, 'click', openAttachment, geometry);
        GL.DomEvent.on(a2, 'click', closeAttachment, geometry);
        GL.DomEvent.on(a3, 'click', changeAttachmentPlacement, geometry);
        GL.DomEvent.on(a4, 'click', setAttachmentContent, geometry);
      
        return div;
      }
      
      function openAttachment() {
        var p = this.getPopup();
        if (p) {
          p.openAttachment();
        }
      }
      
      function closeAttachment() {
        var p = this.getPopup();
        if (p) {
          p.closeAttachment();
        }
      }
      
      function changeAttachmentPlacement() {
        var placements = ['left', 'right', 'top'];
        var placement = placements[Math.floor(Math.random() * placements.length)];
        var p = this.getPopup();
        if (p) {
          p.setAttachmentOptions({
            attachmentPlacement: placement
          });
        }
      }
      
      function setAttachmentContent() {
        var p = this.getPopup();
        if (p) {
          p.setAttachmentContent(
            '<div style="color: red;">附属框 ' + new Date() + '</div>'
          );
        }
      }
      
      GL.init(initMap, '/examples/static/conf.json');

    </script>
  </body>
</html>
已复制!