Google マップに JSON データを入力しました。マップに表示するデータのカテゴリを選択するためのチェックボックスがいくつかありました。チェックボックスをクリックすると、Ajax を介して新しい JSON データが呼び出されます。ボックスのチェックを外すと、すべてのマーカーの配列がループされ、カテゴリがチェックされていないすべてのマーカーが削除されます。
ほとんどの場合は機能しますが、マーカーが消えて再び表示されることがあります。彼らはまだ配列か何かにいるようです...
$( "input[type=checkbox]" ).change(function() {
var data ='';
var checkbox = $(this);
var checkboxVal = $(this).val();
console.log('click');
if (checkbox.is(':checked')) {
$('.loader').show();
$("input:checkbox[name=poi_categories]:checked").each(function() {
data = data + checkboxVal + ',';
$.ajax({
type: "POST",
url: window.location.pathname,
data: "categorie=" + data,
success:function(response){
json = JSON.parse(response);
for (var i = 0; i < json.length; i++) {
createMarker(json[i], data);
}
$('.loader').hide();
}
});
});
} else {
for (var i in markersArray) {
if ( markersArray[i] != undefined) {
if( null == markersArray[i].cat || markersArray[i].cat == checkboxVal) {
markersArray[i].setMap(null);
delete(markersArray[i]);
}
}
}
}
});
最後のforループに間違いがあると確信していますが、何がわかりません...
編集 :
Jsコード全体は次のとおりです:http://jsfiddle.net/5bMQm/