作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我稍后需要制作热图动画。到目前为止我有这个代码:
HTML
<div id="filteredMap" style="margin-top:15px;" class="col-md-8 col-md-offset-0 col-sm-5 col-sm-offset-3 col-xs-10 col-xs-offset-2 form-group center-block">
<span class="label label-warning">Google map can not be loaded, or you have not filtered the full map.</span>
</div>
JavaScript
$(document).ready(function () {
var heatMapDataFiltered = [];
var heatmapFiltered;
var mapFiltered;
var mapOptionsFiltered;
function initialize() {
mapOptionsFiltered = {
center: { lat: @ViewBag.lat, lng: @ViewBag.lng },
zoom: 15,
maxZoom: 18,
minZoom:14
};
mapFiltered = new google.maps.Map(document.getElementById('filteredMap'),
mapOptionsFiltered);
heatmapFiltered = new google.maps.visualization.HeatmapLayer({
data: heatMapDataFiltered
});
heatmapFiltered.setMap(mapFiltered);
heatmapFiltered.set('gradient', heatmapFiltered.get('gradient') ? null : gradient);
}
$('#btnShowPulse').click(function(){
heatmapFiltered.setMap(null);
heatMapDataFiltered = [];
var noDate = "no";
if($('#NoDate').is(':checked')){
noDate = "yes";
}
var venueCategoryName = $('#venueCategoryName').val();
var venueStartingDate = $('#venueStartingDate').val();
var venueEndingDate = $('#venueEndingDate').val();
var URL = "/Map/FilterJSON?venueCategoryName=" + venueCategoryName + "&venueStartingDate=" + venueStartingDate + "&venueEndingDate=" + venueEndingDate + "&NoDate=" + noDate;
$.ajax({
type: 'get',
dataType: 'json',
cache: false,
url: URL,
success: function (data) {
$.each(data, function (index, data) {
heatMapDataFiltered.push({
location: new google.maps.LatLng(data.lat, data.lng),
weight: data.weight
});
heatmapFiltered = new google.maps.visualization.HeatmapLayer({
data: heatMapDataFiltered
});
heatmapFiltered.setMap(mapFiltered);
heatmapFiltered.set('gradient', heatmapFiltered.get('gradient') ? null : gradient);
setTimeout(2000);
});
},
error: function (request, status, error) {
alert(request.responseText);
}
});
});
google.maps.event.addDomListener(window, 'load', initialize);
});
问题是,这段代码运行成功,但我在 map 上看不到一个点。它将显示所有点,而不是一个一个地显示。我不知道为什么setTimeout
不能正常工作?
最佳答案
setTimeout(2000)
不会执行任何操作。
setTimeout(callback, 2000)
将等待两秒,然后执行 callback
函数。
这是一个带有匿名函数的版本:
$.each(data, function (index, data) {
setTimeout(function() {
heatMapDataFiltered.push({
location: new google.maps.LatLng(data.lat, data.lng),
weight: data.weight
});
heatmapFiltered = new google.maps.visualization.HeatmapLayer({
data: heatMapDataFiltered
});
heatmapFiltered.setMap(mapFiltered);
heatmapFiltered.set('gradient', heatmapFiltered.get('gradient') ? null : gradient);
}, 2000 * index)
});
关于javascript - 动画热图图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278248/
我是一名优秀的程序员,十分优秀!