首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何像mapbox上的雨点查看器一样为雷达栅格制作动画

如何像mapbox上的雨点查看器一样为雷达栅格制作动画
EN

Stack Overflow用户
提问于 2019-09-12 09:41:07
回答 2查看 540关注 0票数 0

我在用rainviewer磁贴存储雷达数据。

https://tilecache.rainviewer.com/v2/radar/1568251200/256/{z}/{x}/{y}/3/0_0.png

我想用时间戳更新平铺栅格,以便为雷达制作动画,比如https://rainviewer.com

我从这个url https://tilecache.rainviewer.com/api/maps.json中获取时间戳。

我为我糟糕的英语道歉

代码语言:javascript
复制
function update_radar(){
    $.getJSON("https://tilecache.rainviewer.com/api/maps.json",     function(data) {
    map.removeLayer("rainviewer");
    map.removeSource("rainviewer");
    map.addSource("rainviewer", {
        type: "raster",
        tiles: [
            getPath(data[data.length - 1])
        ],
        tileSize: 256
    });
    map.addLayer({
        id: "rainviewer",
        type: "raster",
        source: "rainviewer",
        paint: {
            "raster-opacity": 1
        },
        minzoom: 0,
        maxzoom: 12
    });
    });
}

function getPath(time) {
    return "https://tilecache.rainviewer.com/v2/radar/" + time + "/256/{z}/{x}/{y}/3/0_0.png";
}
EN

回答 2

Stack Overflow用户

发布于 2019-09-13 02:04:28

您可以最初为每个源添加一个层,然后将它们全部设置为隐藏,并根据时间函数逐个启用这些层,例如每2秒。

要显示或隐藏图层,请执行以下操作:

代码语言:javascript
复制
map.setLayoutProperty("layerId", "visibility", "visible");
map.setLayoutProperty("layerId", "visibility", "none");

要使动画更平滑,还应使用:

代码语言:javascript
复制
map.setPaintProperty("layerId", "raster-opacity", opacity);

下面是一个类似于rainviewer的工作示例的代码:

https://codepen.io/manishraj/full/gOYKMjO

票数 1
EN

Stack Overflow用户

发布于 2019-09-13 01:43:25

您可以运行一个setInterval函数来更新您的URL,这与在this example中的操作类似。你的代码看起来会像这样:

代码语言:javascript
复制
setInterval(function() {
   map.getSource("rainviewer").updateImage({ url: getPath(data[data.length - 1]) });
}, 200);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57898711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档