マーカーを 2 秒ごとに更新するマップがあります。特定のマーカーで「何か」が間違っているというサードパーティのライブラリを使用して、トースト メッセージを表示します。トーストをクリックすると、マップが中央に配置され、特定のマーカーにズームインされます。
単一のマーカーではすべて正常に機能しますが、複数のトーストがあると、最終的に最後のマーカー (「何か」がうまくいかなかった場所) が表示されます。これは js クロージャとスコープに関連する問題であることは理解していますが、解決方法がわかりません。
if(/*something is wrong at marker*/) {
if(toastShown.indexOf(i) == (-1)) // check if toast has been shown
{
toastShown.push(i); // mark toast for current marker as shown
var err = "Problem detected! Click to go to location";
toastr.error(err, 'Error!', {timeOut: 10000});
problemAtPoint.push(point);
index++;
}
}
for( var j = 0; j < index; j++) {
toastr.options.onclick = (function() {
return function() {
//alert('clicked!');
map.setCenter(problemAtPoint[index]);
map.setZoom(15);
}
})(problemAtPoint[index]);
}