Based on Google's Marker Clustering Documentation/Example, I'd recommend creating a custom module that includes:
- The Google Maps Marker Clusterer js library.
- Setting up a json endpoint/route for the location nodes/entities
The Google Maps clustering library is grid-based, dividing the map into squares of a certain size.
If you want regions bounded by state/provincial borders, this library won't satisfy the zoomed out map with multiple regions; you'll need something more custom. In such a case, you can:
- add a taxonomy for the regions (with a custom set of geocoordinates for the center or political capital of each region)
- load a custom high level map with the regions defined/outlined with svg polygon paths and displaying custom cluster pins
- on each specific regional map utilize the grid-based clustering library