在不重新加载地图控件的情况下刷新动画图块层

Refreshing animated tile layer without reloading maps control

我正在使用 Bing Maps 交互式 SDK 中的动画雷达层: https://www.bing.com/api/maps/sdkrelease/mapcontrol/isdk/weatherradarmap?toWww=1&redig=40890DB2E2C449AC91DAD6CD69209931

我了解切片图层的分配方式。我如何修改它以便在不重新加载整个页面(意味着不重新加载地图控件)的情况下按一定间隔(比如每 15 分钟)刷新切片图层?

到目前为止,我已经将 tileSource 循环提取到它自己的函数中:

 function addRadarLayer() {
                // alert to mark time when radar data was loaded or refreshed
                // var d = new Date();
                // alert("Updating radar " + d.toLocaleTimeString());
                // alert (map.layers.length);

                for (var i = 0; i < timestamps.length; i++) {
                    var tileSource = new Microsoft.Maps.TileSource({
                        uriConstructor: urlTemplate.replace('{timestamp}', timestamps[i])
                    });
                    tileSources.push(tileSource);
                };


                if (map.layers.length>0) {
                    // alert('clear layer');
                    // map.layers.clear();
                    // alert(map.layers.length);
                    //alert('add layer')
                    map.layers[0].setOptions({ mercator: tileSources, frameRate: 500 });
                } else {
                    var animatedLayer = new Microsoft.Maps.AnimatedTileLayer({ mercator: tileSources, frameRate: 500 });
                    map.layers.insert(animatedLayer);
                    //alert('New tiles');
                };
            };

然后我直接调用那个函数然后使用setInterval

                addRadarLayer();

                window.setInterval(function () {
                    addRadarLayer();
                    }, 1000 * 60 * 15); // repeat forever, polling every 15 minutes

            };

但是过了一段时间我发现页面不再刷新了。如果我刷新浏览器一切正常,但是(再次)重新加载地图控件,这不是我真正想要的。

刷新图块源时,将随机查询字符串参数添加到 URL,如

?r=1234 并在每次刷新时更改值 (1234)。这应该绕过本地缓存,这是您问题的根本原因。