我用 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/