toy4fun
toy4fun

Reputation: 849

Set visibility of MarkerClusterer

Trying to toggle the visibility of MarkerClusterer (V3):

var hydrantsShowing = true;  

function ToggleHydrants() {  
    var markers = hydrantsClusterer.getMarkers();

    for (var i = 0; i < markers.length; i++) {
        markers[i].setVisible(!hydrantsShowing);
    }

    hydrantsShowing = !hydrantsShowing;
}

The markers do toggle but with two problems:
1. The map must be panned a bit to the change can take place.
2. The MarkerClusterer icons (with the numbers) are always there, even after the markers are not visible.

I've also tried using the setMap approach, but with similar behavior:

var hydrantsShowing = true;  

function ToggleHydrants() {  
    var markers = hydrantsClusterer.getMarkers();

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

    hydrantsShowing = !hydrantsShowing;
}

Upvotes: 3

Views: 2024

Answers (1)

toy4fun
toy4fun

Reputation: 849

Solved it by using MarkerClustererPlus instead.

var hydrantsShowing = true;  

function ToggleHydrants() {
  var markers = hydrantsClusterer.getMarkers();

  for (var i = 0; i < markers.length; i++) {
      markers[i].setVisible(!hydrantsShowing);
  }

  hydrantsClusterer.repaint();
  hydrantsShowing = !hydrantsShowing;
}  

Calling repaint() after setting visibility sorted all issues.
The original MarkerClusterer don't have such a function.

Upvotes: 5

Related Questions