我試圖在谷歌地圖中實現一些「強制動畫」,通過顯示標記被逐個添加。setTimeout每次添加標記時
爲此,我使用了下面的代碼。
function Marker(i) {
if(i > locations.length) return;
var populationOptions = {
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35,
map: map,
center: citymap[locations[i][1]].center,
radius: citymap[locations[i][1]].population
};
cityCircle = new google.maps.Circle(populationOptions);
var t = setTimeout("Marker("+(i+1)+")",2000);
}
Marker(0);
我已經採取本實施例中從:Here,但螢火蟲說,功能標記不是上的setTimeout的線所限定();
任何想法?
更新的代碼:
function Marker(city) {
alert(city);
var populationOptions = {
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35,
map: map,
center: citymap[city].center,
radius: citymap[city].population
};
cityCircle = new google.maps.Circle(populationOptions);
}
for (city in citymap) {
var t = setTimeout(function(){Marker(city);},2000);
}
我認爲每一次標記叫,它會具有2秒的延遲,但事實並非如此。它等待2秒鐘,然後一次運行。此外,「城市」不更新,在城市地圖中添加相同標記x倍城市數量。
for循環不等待超時完成?
PR ovide js小提琴 – 2013-05-08 09:31:53
你的超時在Marker()內,所以這個bug – 2013-05-08 09:34:18
我更新了代碼!代碼是通過一個例子來進行的,並且它被認爲適用於OP。 – M1nga 2013-05-08 09:47:01