Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Updating markerclusters

I have a google map set up with markers supplied via a JSON feed. Since there are a large number of markers involved (over 600) I have used markerclusterer v3 to speed things up. Everything is working fine until I try to change the markers displayed via option buttons. I have this function assigned to radio buttons :

function activities(markerarray,mapused,actType) {
    for(i in markerarray) {
        if(markerarray[i].activity[actType] == null) {
            markerarray[i].setMap(null);
    }
        else {
            markerarray[i].setMap(mapused);
    }
}
return markerarray;
}

This will stop the markers from displaying on the map and works fine for the actual google markers. However I don't seem to be able to find how to update the cluster which was created when the page loaded.

like image 292
Donny Hammell Avatar asked May 17 '11 14:05

Donny Hammell


People also ask

How do I remove a marker cluster from Google Maps?

You can delete the markers by removing them from the map and then setting the array's length to 0 , which removes all references to the markers.


1 Answers

In order to update a cluster you should first call resetViewport(); method to hide it than use redraw(); method to recalculate clusters.

Using a setMap(null) function on a marker won't unregister it from a markerClusterer, to unregister you can use removeMarkers(marker, opt_nodraw) or removeMarkers(markers, opt_nodraw) functions. From my experience these are expensive operations. Setting opt_nodraw function to true will force no redraw which will improve performace.

You can first delete a bunch of markers with opt_nodraw set to true and than resetViewport(); redraw(); later manually.

like image 165
solidrevolution Avatar answered Sep 17 '22 22:09

solidrevolution