在不重新加载地图控件的情况下刷新动画图块层
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)。这应该绕过本地缓存,这是您问题的根本原因。
我正在使用 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)。这应该绕过本地缓存,这是您问题的根本原因。