I should show a set of markers on map to indicate nearby points of interest. These markers will open public chat rooms by click and therefore I think the users should see short address information about each marker before entering that room without the need to click on the marker. However, if I change marker icons in that sense, some of the markers may collide as you can see below:
What I want to do is showing as many as possible markers without collision and replace the icon of these colliding ones with a very small marker like a dot (and no address information):
I achieved to get this result by performing x-axis sweep algorithm to detect collisions but unfortunately, if a marker stops colliding after the user scrolls the map or it exists from the screen or another markers enters the screens and begins to collide with other markers or the user scrolls to a completely new area,.. this algorithm should be performed again and again at every turn. To eliminate the majority of colliding markers I make use of maps-utils marker clustering but I need a more painstaking methodology to overcome this issue. I consider to implement quadtree but I could not be sure whether it is the best way or not. Any advice?
Example: