Ma a te funziona cosi? a me no.
Cioè nel senso se io spunto una chekbox e poi senza spuntarne altre, mi elimina i markers.

Ma se io li spunto tutti, o cmq più di una, non elimina più i marker.

codice:
<script type="text/javascript">

(function() {
window.onload = function(){

var latlng = new google.maps.LatLng(37.8530665, 15.287916300000006); 
var options = { 
zoom: 14,
center: latlng,
backgroundColor: '#fff',
mapTypeId: google.maps.MapTypeId.ROADMAP
}; 



var map = new google.maps.Map(document.getElementById('map_canvas'), options);

var markers = [];


$(".chek").click(function() {
var id_checkbox = $(this).val();



function AddMarker(lat,name,icon,id,index) {
marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: lat,
map: map,
icon: icon,
title: name
});
markers[index] = marker;
markers[index].id_cat = id;
}


if($(this).is(':checked')) {


$.post("ajax.php",{ type:id_checkbox,page: "mapHome" }, function(data) {	
	for (i=0; i <= data.marker.length; i++) { 
	var lat = new google.maps.LatLng(data.marker[i].latitude, data.marker[i].longitude); 
	AddMarker(lat, data.marker[i].nome, data.marker[i].marker, data.marker[i].id_cat,i);	
	}// ciclo for
},"json");//ajax

} else {
for (i = 0; i < markers.length; i++) {
				if(id_checkbox == markers[i].id_cat) {
					markers[i].setMap(null);
				}
			}

}





});


}
})();
</script>


codice:
JSON
{"marker":
[
{"id":"1","nome":"Gran Hotel","latitude":"37.85243901866244","longitude":"15.291252264031982","marker":"5star.png","id_cat":"1"},
{"id":"16","nome":"Eljabel","latitude":"37.85135733649974","longitude":"15.283279196434023","marker":"4star.png","id_cat":"1"}
]
}