Javascript 添加谷歌地图标记绘图之间的延迟
我需要在标记的每个绘图之间添加1秒的延迟。我提出了以下代码,但无法使其工作。有什么想法吗Javascript 添加谷歌地图标记绘图之间的延迟,javascript,google-maps,Javascript,Google Maps,我需要在标记的每个绘图之间添加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"
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,
});
}
var-latlng=new google.maps.latlng(43,2.34);
变量myOptions={
缩放:7,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
对于(var i=0,len=json.length;i这里有两件事情出错了
第一个是,将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_标记,因此,如果您解决了问题1,即使如此,所有标记都将在~1000毫秒后生成
解决此问题的一个简单方法是将当前值(如果增量变量为)传递给显示标记,然后将其乘以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);
}
var obj、lat、long;
对于(var i=0,len=json.length;i来说,您可能希望setTimeout
在继续运行display\u marker
中的后续行之前阻止执行,但是setTimeout
的工作方式是向执行堆栈中添加一个进程,该进程应该在指定的时间前后执行,尽管它不是非常精确
看起来您要做的是在迭代值时将对display\u marker
的引用传递到setTimeout
中
setTimeout(function() {
display_marker(map, lat, long);
}, 1000);
John Resig写了一篇关于JavaScript计时器的博文,我发现它非常有用:。有关通过setTimeout
传递参数的信息,请参阅以下答案: