好吧,我不知道是否可以真正将一个热图动画化到另一个中,但绝对可以做这样的事情。
这基本上与您做的事情相同,但速度更快。
您可以使用一些基本的 JavaScript 来实现类似的功能。
例如:
<script type="text/javascript">
// initialise variables
var speed=5;
x=0;
var interval = setInterval(function(){},10000000);
var heatmap;
// function to change map
function changeSpeed(change) {
speed = speed+change;
if (speed<=0) speed=1;
if (speed>=10) speed=10;
// speed --> delay
if (speed>5) {
delay=1000/(speed-5);
} else {
delay=1000*(6-speed);
}
document.getElementById('speed').firstChild.nodeValue=speed;
// restarting the function
clearInterval(interval)
interval=setInterval(function(){
x++;
if (x>=heatmapFiles.length) x=0;
// document.getElementById('filename').firstChild.nodeValue=heatmapFiles[x];
var re = /[0-9]{8}/;
var datestr = re.exec(heatmapFiles[x])[0];
document.getElementById('date').firstChild.nodeValue=datestr.substring(6,8)+"."+datestr.substring(4,6)+"."+datestr.substring(0,4);
var req = new XMLHttpRequest();
req.open("GET", "./"+heatmapFiles[x], true);
req.onreadystatechange = function heatmapLoaded() {
if (req.readyState == 4) {
eval("map="+req.responseText);
heatmap.setData(map);
}
}
req.send(null);
// redraw
document.getElementById('boxed').style.display = 'none';
document.getElementById('boxed').style.display = 'inline-block';
},delay);
}
// this is important for you
function initialize() {
map = new google.maps.Map(document.getElementById('map_canvas'), {
center: new google.maps.LatLng(0,0),
zoom: 2,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// creating a new heatmap
heatmap = new google.maps.visualization.HeatmapLayer({ radius: 50 });
heatmap.setMap(map);
// calling the 'change map' function
changeSpeed(0);
}
</script>
它是如何工作的?
热图数据以 JSON 格式存储在单独的 Javascript 文件中。计时器用于加载下一个数据集。它将被解析并分配给 Google Maps HeatMapLayer 对象的“数据”属性。更改属性后,将使用新数据集自动重绘热图。资源
或者
您可以在不同的 s 中创建不同的热图div
,然后将 jQuery 同时用于fadeIn
“新”热图和fadeOut
“旧”热图。这将创建一种“动画”。
我希望这能够帮到你。祝你好运!