1. 程式人生 > 實用技巧 >openlayers 標記點閃爍

openlayers 標記點閃爍

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://openlayers.org/en/v5.3.0/css/ol.css" />
  <script type="text/javascript" src="https://openlayers.org/en/v5.3.0/build/ol.js"></script>
  <title>Document</title>
</head>
<body>
  <div id="map"></div>
  <script>
      var beijing = ol.proj.fromLonLat([116.28, 39.54]);
      var map = new ol.Map({
          target: 'map',
          layers: [
              new ol.layer.Tile({
                  source: new ol.source.OSM()
              })
          ],
          view: new ol.View({
              center: beijing,
              zoom: 4
          })
      });

      //例項化向量點要素,通過向量圖層新增到地圖容器中
      //這樣就實現了預先載入圖文標註
      var iconFeature = new ol.Feature({
          geometry: new ol.geom.Point(beijing),
          name: '北京市',                         //名稱屬性
          population: 2115                       //人口數(萬)
      });
      //設定點要素樣式
      iconFeature.setStyle(createLabelStyle(iconFeature));
      //向量標註的資料來源
      var vectorSource = new ol.source.Vector({
          features: [iconFeature]
      });
      //向量標註圖層
      var vectorLayer = new ol.layer.Vector({
          source: vectorSource,
          visible: false
      });
      map.addLayer(vectorLayer);

      //向量標註樣式設定函式,設定image為圖示ol.style.Icon
      function createLabelStyle(feature){
          console.log(feature);
          return new ol.style.Style({
              image: new ol.style.Icon({
                  anchor: [0.5, 60],              //錨點
                  anchorOrigin:'top-right',       //錨點源
                  anchorXUnits: 'fraction',       //錨點X值單位
                  anchorYUnits: 'pixels',         //錨點Y值單位
                  offsetOrigin: 'top-right',      //偏移原點
                  opacity: 0.75,
                  scale: 0.05,
                  src: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1594359193211&di=1d6bb819a5daa724ff65cc4d011d4d42&imgtype=0&src=http%3A%2F%2Fku.90sjimg.com%2Felement_pic%2F17%2F10%2F27%2F05dc60e54e3aa5d093cdc32611303643.jpg'  //圖示的URL
              }),
          });
      }
      var flag=true
      setInterval(() => {
        flag=!flag
        vectorLayer.setVisible(flag)
      }, 300);
  </script>
</body>
</html>