使用Javascript在Google地图中显示/隐藏标记群集

使用Javascript在Google地图中显示/隐藏标记群集,javascript,google-maps,markerclusterer,Javascript,Google Maps,Markerclusterer,我有一个带有两种类型标记的地图,到目前为止,我提供了两个复选框,可以使用以下代码显示/隐藏这些标记: 复选框 <input type="checkbox" id="suggested" name="suggested" onclick="toggleMarkers('suggested')"> <label for="suggested"> Suggested</label> <input type="checkbox" id="organized" n

我有一个带有两种类型标记的地图,到目前为止,我提供了两个复选框,可以使用以下代码显示/隐藏这些标记:

复选框

<input type="checkbox" id="suggested" name="suggested" onclick="toggleMarkers('suggested')">
<label for="suggested"> Suggested</label>
<input type="checkbox" id="organized" name="organized" onclick="toggleMarkers('organized')">
<label for="organized"> Organized</label>
问题是,我想保留显示/隐藏标记类别的功能,但上面的代码对此不再适用,它有一个错误的行为。如何显示/隐藏簇的类别以及簇内未包含的相同类别的标记?

根据,
MarkerClusterer
具有方法
addMarkers
clearMarkers

function toggleClusterer(type){
    switch(type)
    {
        case 'suggested':
            toggle(suggestedCluster, suggested);
            break;

        case 'organized':
            toggle(organizedCluster, organized);
            break;
    }

    function toggle(clusterer, markers) {
        if(clusterer.getMarkers().length == 0){
            clusterer.addMarkers(markers);
        } else {
            clusterer.clearMarkers();
        }
    }
}

当然,现在我已经介绍了markercluster,我将不再使用简单的标记,这只是为了解释这种情况。我将尝试执行您的建议。执行此操作时,我会在控制台中收到一条
TypeError:this.ma.remove不是函数
消息,引用
cluster.setMap(null)快到了。现在,clusterer已从映射中删除,但在第二次单击复选框时,它不会显示出来。我从IDE
中得到了这个提示,参数的数量无效,指令
cluster.setMap(map,markers)应为1cluster.setMarkers(markers)未定义函数
setMarkers()
。我正在使用GMAPSV3的V1.0.3库。
let suggestedCluster = new MarkerClusterer(map, suggested, {gridSize:80, styles:styles[0]});

let organizedCluster = new MarkerClusterer(map, organized, {gridSize:80, styles:styles[1]});
function toggleClusterer(type){
    switch(type)
    {
        case 'suggested':
            toggle(suggestedCluster, suggested);
            break;

        case 'organized':
            toggle(organizedCluster, organized);
            break;
    }

    function toggle(clusterer, markers) {
        if(clusterer.getMarkers().length == 0){
            clusterer.addMarkers(markers);
        } else {
            clusterer.clearMarkers();
        }
    }
}