如何在谷歌地图中隐藏和显示MarkerClusterer

Jac*_*rky 8 javascript show-hide google-maps-markers markerclusterer

我正试图在用户点击某些按钮时隐藏/显示markerClusterer:

这是我正在尝试做的事情:

    map = new google.maps.Map(document.getElementById("mappa"),mapOptions);
    var marker_tmp = [];
    var markers_tmp = [];
    $.each(json,function(index,value){
        var latLng = new google.maps.LatLng(value.lat,value.lng);
        var marker = new google.maps.Marker({'position': latLng});
        if((value.candidato in markers_tmp)==false){
            markers_tmp[value.name]=[];
        }
        markers_tmp[value.name].push(marker);
    });
    for(var name in markers_tmp){
        markers[name]= new MarkerClusterer(map,markers_tmp[name]);
    }
Run Code Online (Sandbox Code Playgroud)

我创建了多个markerClusterer,每个都与一个特定的名称相关联.

所以我有一些与这些特定名称相关的按钮,我需要隐藏/显示与该按钮关联的标记聚类.

/*This is the function associated to a button when it is clicked*/
function hide_show_cluster(name,visible){
    var tmp_cluster = markers[name];
    //call a function of markerClusterer (tmp_cluster) to hide/show it
}
Run Code Online (Sandbox Code Playgroud)

我做了很多测试,但没有人满足我的要求.有人能帮我吗?谢谢!

nic*_*bie 21

我整个上午一直在苦苦挣扎,但幸运的是我得到了解决方案.

首先,确保您拥有最新的MarkerClustererPlus版本https://github.com/googlemaps/js-marker-clusterer

那很容易

创建标记时请确保

将其可见标志设置为false.

创建标记聚类器时,请按以下方式执行:

new MarkerClusterer(map, markers, { ignoreHidden: true });
Run Code Online (Sandbox Code Playgroud)

如果你想显示聚类器就这样做:

for (var it in markers) {
    markers[it].setVisible(true);
}

markerCluster.repaint();
Run Code Online (Sandbox Code Playgroud)

隐藏群集:

for (var it in markers) {
    markers[it].setVisible(false);
}

markerCluster.repaint();
Run Code Online (Sandbox Code Playgroud)

希望它有所帮助,问候

  • 仅供参考...在 MarkerClusterer 的最新版本 1.2.0 中,该参数称为:'ignoreHiddenMarkers' (2认同)

Abd*_*din 5

我有同样的情况,这就是我的做法......希望它有帮助

集群实例化

let markerCluster = new MarkerClusterer(map, markers, {
    imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
Run Code Online (Sandbox Code Playgroud)

隐藏簇:

function hideMarkers() {
    for (let i in markers) {
        markers[i].setMap(null);
    }
    markerCluster.clearMarkers();
}
Run Code Online (Sandbox Code Playgroud)

显示集群:

function showMarkers() {
    for (let i in markers) {
        markers[i].setMap(map);
    }
    markerCluster.addMarkers(markers);
}
Run Code Online (Sandbox Code Playgroud)

这是一个用于测试的 jsfiddle 链接http://jsfiddle.net/3s6qfzcy/