Question: Is there way in jetpack(mozilla's extension development framework) , to find the the visited links in a page?

BTW: jquery's a:visited works in firebug , but not in jetpack. i'm guessing
it's part of jetpack's security.

Answer: 
I had a similar problem and you cannot avoid having overlapped icons regardless the method to mark some icons as high-priority.

What I did(it might not be easy to apply in your case - in my case the map was rendered in a desktop application, with much more control above the rendering process) was to sort based on priority, and paint only markers which are not overlapping - showing also a message like "XXX overlapping markers removed". This way the user doesn't become overwhelmed with information and he still sees the most important information.

I hope this helps.
I have some experience in designing a map application from scratch I would recommend you to split the entire world into 16 zoom levels. Zoom Level 0 should show the entire world and Zoom level 15 should cover the street data.

Typically, you would have to use the zoom levels 0 to 3 to have boundaries of the countries. And each zoom level should have a zoom range of 1/4th of the previous zoom range. You can have a zoom to table map (assuming you are using a database to store the spatial related data). Once you define the zoom levels and the range of the zoom levels to table mapping you can have finer control on querying the data. And its recommended to construct a [R-Tree](http://en.wikipedia.org/wiki/R-tree) indexing for your map data.

Each and everytime you get a layer/table (assuming a layer can be either a country boundary or a railway track or a street), its advisable to define a zoom level by yourself instead of spending time in finding an algorithm since the number of layers are not going to be huge.

I can keep going, but if you want specific answers, I can address them as well.