好的,这是一个主要的编辑。我想我可以通过给出一个类似的简单代码的例子来实现,但这并没有帮助。
我有一个显示谷歌地图的工作功能,然后用信息窗口放置标记。这一切都很好。然后我决定我想稍微延迟标记的丢弃,而不是一次全部丢弃,它们会暂停 xx 毫秒,然后再丢弃下一个。我无法让它工作,我困惑的主要原因是我似乎对 for 循环在 JavaScript 中的工作方式感到困惑。
我正在使用 setTimeout,无法使其正常工作,意识到我的困惑与 setTimeout 无关,所以我将其拉出并用警报替换它,我得到了相同的行为。我不是在找人来写我的代码,我只是不明白我在这里缺少什么。
我希望在 for 循环中是这种行为......
For do something do something else do another thing next
我所看到的似乎我得到了这种行为......
对于做某事做其他事情(并通过代码为每个循环做)接下来做另一件事
所以这里是代码:
function delaydropmarkers()
{
alert("delaydropmarkers");
}
function marker(location)
{
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(37.5, -98.35);
var mapOptions =
{
zoom: 5,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('googleMap'), mapOptions);
var infowindow = new google.maps.InfoWindow(), marker, i;
for (i = 0; i < location.length; i++)
{
marker = new google.maps.Marker(
{
position: new google.maps.LatLng(location[i][1], location[i][2]),
animation: google.maps.Animation.DROP,
map: map
}
);
delaydropmarkers();
google.maps.event.addListener(marker, 'click', (function (marker, i)
{
return function ()
{
infowindow.setContent(location[i][0]);
infowindow.open(map, marker);
}
}
)(marker, i));
}
}
所以我调用了应该创建一个标记的标记函数,转到 delaydropmarkers 函数(它现在只有一个警报),然后添加监听器。我让所有标记都同时运行。我会提前道歉我知道这是我已经感到愚蠢的事情,但我只是没有看到问题。
任何帮助是极大的赞赏。