[Mapbox GL]实现一系列图片的动画效果

        使用一些图片资源实现动画效果

<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8' />
    <title></title>
    <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
    <script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.29.0/mapbox-gl.js'></script>
    <link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.29.0/mapbox-gl.css' rel='stylesheet' />
    <style>
        body { margin:0; padding:0; }
        #map { position:absolute; top:0; bottom:0; width:100%; }
    </style>
</head>
<body>

<div id='map'></div>
<script>
mapboxgl.accessToken = '<your access token here>';
var map = new mapboxgl.Map({
    container: 'map',
    style: 'mapbox://styles/mapbox/dark-v9',
    maxZoom: 5.99,
    minZoom: 4,
    zoom: 5,
    center: [-75.789, 41.874]
});

map.on('load', function() {

    var frameCount = 5;
    for (var i = 0; i < frameCount; i++) {
        map.addSource('radar' + i, {
            type: 'image',     /* iamge类型资源 */
            url: 'https://www.mapbox.com/mapbox-gl-js/assets/radar' + i + '.gif', /* image的url */
            coordinates: [
                [-80.425, 46.437],
                [-71.516, 46.437],
                [-71.516, 37.936],
                [-80.425, 37.936]
            ]
        });

        map.addLayer({
            id: 'radar' + i,
            source: 'radar' + i,
            type: 'raster',        /* 栅格类型layer,这里图片用的是raster layer */
            paint: {
                'raster-opacity': 0,   /* 图片透明度 */
                'raster-opacity-transition': {
                    duration: 0
                }
            }
        });
    }

    var frame = frameCount - 1;
    /* 通过周期设置不同图片的透明度实现动画效果 */
    setInterval(function() {      /* setInterval(callback,delay)实现动画效果,每隔delay毫秒调用一下callback */     
        map.setPaintProperty('radar' + frame, 'raster-opacity', 0);  /* setPaintProperty(ID,name,value):设置id为ID的layer的属性name的属性值是value */
        frame = (frame + 1) % frameCount;
        map.setPaintProperty('radar' + frame, 'raster-opacity', 1);
    }, 200);

});
</script>

</body>
</html>


原文:https://www.mapbox.com/mapbox-gl-js/example/animate-images/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值