マーカーが1つずつ追加されていることを示すことにより、Googleマップに「強制アニメーション」を実装しようとしています。
このために、次のコードを使用しました。
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ですが、Firebug によると、関数 Marker は 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);
}
Marker が呼び出されるたびに 2 秒の遅延があると想定していましたが、そうではありません。2秒待って一気に実行。また、「都市」は更新されず、citymap の都市の数の x 倍の同じマーカーが追加されます。
for サイクルはタイムアウトが終了するのを待ちませんか?