增加谷歌地图标记之间的延迟
Add delay between plots of google map markers
我需要在每个标记之间添加1秒延迟。我想出了下面的代码,但不能使它工作。你知道吗?
var latlng = new google.maps.LatLng(43,2.34);
var myOptions = {
zoom: 7,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
for ( var i=0, len=json.length; i<len; i++ ){
obj = json[i];
// Get lat / long and put them on the map
var lat = obj.latitude;
var long = obj.longitude;
display_marker(map, lat, long);
}
display_marker = function(map, lat, long){
setTimeout(function(){}, 1000);
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(lat,long),
title: "Latitude: " + lat + "'nLongitude: " + long,
});
}
这里有两件事出错了。
第一个是使用setTimeout和一个空函数。你的代码需要在这个函数里面:
display_marker = function(map, lat, long){
setTimeout(function() {
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(lat,long),
title: "Latitude: " + lat + "'nLongitude: " + long,
});
}, 1000);
}
第二个问题是,你的循环触发display_marker一个接一个,所以如果你修复问题1,即使你所有的标记将在~1000ms后生成
解决这个问题的一个简单方法是,将increment-var的当前值传递给显示标记,并将其乘以setTimeout:var obj, lat, long;
for ( var i=0, len=json.length; i<len; i++ ){
obj = json[i];
// Get lat / long and put them on the map
lat = obj.latitude;
long = obj.longitude;
display_marker(map, lat, long, i);
}
display_marker = function(map, lat, long, increment){
setTimeout(function() {
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(lat,long),
title: "Latitude: " + lat + "'nLongitude: " + long,
});
}, increment * 1000);
}
提示:看看我对变量声明做了什么。您正在重新声明循环中的变量
提示2:我的代码是未经测试的,但它应该给你正确的想法如何解决你的问题
看起来您可能希望setTimeout
在继续运行display_marker
中的后续行之前阻止执行。setTimeout
的工作原理是将一个进程添加到执行堆栈中,该进程应该在指定的时间内执行,尽管它不是非常精确。
看起来您想要做的是在迭代值时将对display_marker
的引用传递给setTimeout
。
setTimeout(function() {
display_marker(map, lat, long);
}, 1000);
John Resig写了一篇很棒的关于JavaScript计时器的博文,我发现它非常有用:http://ejohn.org/blog/how-javascript-timers-work/。有关通过setTimeout
传递参数的信息,请参阅此SO答案:https://stackoverflow.com/a/1190656/609206.
相关文章:
- 关键帧之间的css3动画延迟
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟
- jquery .each 循环来执行每个数组项,它们之间有延迟
- AJAX 调用和表单提交之间的延迟
- foreach循环每次迭代之间的延迟
- 在javascript for循环的迭代之间应用延迟
- 如何在JavaScript中测量交互和mousedown事件之间的延迟
- 在Raphael JS中,不透明度:0和开始动画到不透明度:1之间的延迟
- 使用setTimeout在创建新元素之间强制延迟
- Javascript 或 angularjs 在刷新之间延迟浏览器关闭或选项卡关闭
- Javascript - 循环 3 个函数,每个函数之间有延迟
- 在操作之间发送 Ajax 消息集超时 m 延迟
- 在“for”循环迭代之间添加延迟
- 多边形的创建和显示之间的延迟
- 在jQuery的每次迭代之间应用延迟's.each()方法
- jQuery在列表中添加remove类,两者之间有延迟
- JavaScript/CSS:向DOM添加元素和应用其CSS规则之间的延迟
- JavaScript循环迭代中的POST之间需要延迟
- 为什么我的背景幻灯片动画在更改之间有延迟
- 使用$(“[property=value]”).click(),我希望两次单击之间有一个延迟