In combination to my SimpleMarker class I have made an engine for clustering those markers if many of them are in a similar location. However, before you use this engine in your application, please note the following: there are probably much better classes for managing high counts of markers, e.g. the MarkerManager class from the Google Maps Utility Library. My SimpleMarker class is also compatible to this MarkerManager, if you want to combine lightweight markers with managing classes.
You still might want to take a look on my code if you want to learn how clustering can be done, as I tried to design the code as understandable as possible. This is why I wrote this article, so keep on reading and see how it works ;-).
My SimpleMarker class just got an update. As someone pointed out that the MarkerManager from the Google Maps Utility Library needs a setVisible() method from its markers, I have added this particular method. Now it is compatible to the Manager and can be used in situations where you need lightweight markers and clustering or other marker management.
Update: I've uploaded a second update. From now on the bounds which are calculated with SimpleMarker.getBounds() will be cached in an array. This improves the performance for my SimpleCluster class to which an article will follow in the next days.
Lately I have been working a lot with the Google Maps API V3. In many cases you want to display a high count of markers, but the default google.maps.Marker acts horribly slow when shown in large numbers. Because of this, the concept of "Lightweight Markers" has been invented. Basically you implement an abstract class for an overlay that keeps the marker-object in the DOM hierarchy as simple as possible. There are various implementations of lightweight markers, some of them have more and some of them less features.