使用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)应为1事实上,查看setMap函数的签名,它只接受map作为参数。噢!愚蠢的错误。该行应为cluster.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();
}
}
}