zoukankan      html  css  js  c++  java
  • mapbox展示动态图标

    mapbox-gl通过为marker设置css动画,实现动态闪烁效果,先放个效果图 。

     1.主要就是为元素设置一个动画,

    myfirst动画让元素随时间放大
     1 .marker {
     2             /* background: url("./image/loc.png"); */
     3             background-position: center center;
     4             width:20px;
     5             height:20px;
     6             display: flex;
     7             display: -webkit-flex;
     8             align-items: center;
     9             justify-content: center;
    10         }
    11         .marker p{
    12             background-color: rgba(250, 0, 0, 0.2);
    13             width: 10px;
    14             height: 10px;
    15             border-radius:50%;
    16             animation: myfirst 1.5s infinite;
    17             box-shadow: 0px 0px 2px #f00;
    18         }
    19         @keyframes myfirst{
    20             10% {transform: scale(1.2);}
    21             20% {transform: scale(2);}
    22             40% {transform: scale(3);}
    23             60% {transform: scale(4);}
    24             80% {transform: scale(6);}
    25             100% {transform: scale(8);}
    26         }

     2.创建一个marker,其元素应用上述样式即可

    完整代码如下:

      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4     <meta charset='utf-8' />
      5     <title>Add custom icons with Markers</title>
      6     <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
      7     <script src="style/MapStyle.js"></script>
      8     <script src="style/dynamic-traffic-info.js"></script>
      9     <script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.52.0/mapbox-gl.js'></script>
     10     <link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.52.0/mapbox-gl.css' rel='stylesheet' />
     11     <style>
     12         body { margin:0; padding:0; }
     13         #map { position:absolute; top:0; bottom:0; 100%; }
     14         *{
     15             margin: 0;
     16             padding: 0;
     17         }
     18         .dd{
     19             height: 50px;
     20             background-color: #aaa;
     21         }
     22         .marker {
     23             /* background: url("./image/loc.png"); */
     24             background-position: center center;
     25             20px;
     26             height:20px;
     27             display: flex;
     28             display: -webkit-flex;
     29             align-items: center;
     30             justify-content: center;
     31         }
     32         .marker p{
     33             background-color: rgba(250, 0, 0, 0.2);
     34              10px;
     35             height: 10px;
     36             border-radius:50%;
     37             animation: myfirst 1.5s infinite;
     38             box-shadow: 0px 0px 2px #f00;
     39         }
     40         @keyframes myfirst{
     41             10% {transform: scale(1.2);}
     42             20% {transform: scale(2);}
     43             40% {transform: scale(3);}
     44             60% {transform: scale(4);}
     45             80% {transform: scale(6);}
     46             100% {transform: scale(8);}
     47         }
     48     </style>
     49 </head>
     50 <body>
     51 <div id='map'></div>
     52 <script>
     53 mapboxgl.accessToken = 'pk.eyJ1IjoibHhxanNzIiwiYSI6ImNqY3NkanRjajB1MWwzM3MwcnA0dDJrYngifQ.ApTVfmm2zBM_kF22DvtowQ';
     54 var map = new mapboxgl.Map({
     55     container: 'map',
     56     // // style: getTrafficStyle(),
     57     // style: 'mapbox://styles/mapbox/navigation-preview-day-v2',
     58     style: 'mapbox://styles/mapbox/light-v10',
     59     center: [116.270169, 40.087127],
     60     zoom: 4
     61 });
     62 map.on('click', function(event){
     63     let lng = event.lngLat.lng.toFixed(6)
     64     let lat = event.lngLat.lat.toFixed(6)
     65     let zoom = map.getZoom()
     66     console.log('Clicked at : ' + lng + ', ' + lat + '. Zoom: ' + zoom)
     67   // var style = map.getStyle();
     68   //   console.info(JSON.stringify(style));
     69 });
     70 
     71 var geojson = {
     72   "type": "FeatureCollection",
     73   "features": [
     74     {
     75       "type": "Feature",
     76       "geometry": {
     77         "type": "Point",
     78         "coordinates": [
     79           120.1904296875,
     80           30.391830328088137
     81         ]
     82       }
     83     },
     84     {
     85       "type": "Feature",
     86       "geometry": {
     87         "type": "Point",
     88         "coordinates": [
     89           121.44287109374999,
     90           31.16580958786196
     91         ]
     92       }
     93     },
     94     {
     95       "type": "Feature",
     96       "geometry": {
     97         "type": "Point",
     98         "coordinates": [
     99           118.828125,
    100           32.18491105051798
    101         ]
    102       }
    103     },
    104     {
    105       "type": "Feature",
    106       "geometry": {
    107         "type": "Point",
    108         "coordinates": [
    109           117.11975097656249,
    110           31.812229022640704
    111         ]
    112       }
    113     },
    114     {
    115       "type": "Feature",
    116       "geometry": {
    117         "type": "Point",
    118         "coordinates": [
    119           116.45507812500001,
    120           40.07807142745009
    121         ]
    122       }
    123     },
    124     {
    125       "type": "Feature",
    126       "geometry": {
    127         "type": "Point",
    128         "coordinates": [
    129           113.35693359375,
    130           23.160563309048314
    131         ]
    132       }
    133     }
    134   ]
    135 };
    136 
    137 geojson.features.forEach(function(marker) {
    138     var el = document.createElement('div');
    139     el.className = 'marker';
    140 
    141     var el1 = document.createElement('p');
    142     el.appendChild(el1);
    143     var el2 = document.createElement('span');
    144     el1.appendChild(el2);
    145 
    146     new mapboxgl.Marker(el)
    147         .setLngLat(marker.geometry.coordinates)
    148         .addTo(map);
    149 });
    150 </script>
    151 
    152 </body>
    153 </html>
    View Code
  • 相关阅读:
    leetcode66 plusOne
    park/unpark 阻塞与唤醒线程
    leetcode55 jumpGame贪心算法
    ACID特性与事务的隔离级别
    PCB ODB++(Gerber)图形绘制实现方法
    PCB 所建不凡 AWS 技术峰会2018 • 深圳站 2018.9.20
    PCB SQL SERVER 位运算应用实例
    PCB SQL SERVER 枚举分割函数(枚举值分解函数)
    PCB SQL SERVER 正则应用实例
    PCB Genesis 外形加内角孔实现方法
  • 原文地址:https://www.cnblogs.com/jyughynj/p/11208599.html
Copyright © 2011-2022 走看看