I'll shed a little light on showing all markers. I've done something pretty similar to this, but I was using Google Maps API v2 and EE1, but fundamentally should be the same.
The best way to do this is to map all the markers to a XML template so Google can read and plot the markers. Create new xml template in EE and add this:
<markers>
{exp:channel:entries channel="locations" disable="trackbacks|comments|pagination|member_data" status="Open"}
<marker lat="{google_map}{latitude}" lng="{longitude}{/google_map}" label="{title}" >
<infowindow><![CDATA[ <div class="bubble"> _whatever_ </div> ]]></infowindow>
</marker>
{/exp:channel:entries}
</markers>
Then, create a new template that will display the map, read the xml file and plot the markers. Be sure to update the URL to the XML file
<div id="map" style="height: 350px"></div>
<noscript>
<b>JavaScript must be enabled in order for you to use Google Maps.</b>
However, it seems JavaScript is either disabled or not supported by your browser.
To view Google Maps, enable JavaScript by changing your browser options, and then
try again.
</noscript>
<script type="text/javascript">
//<![CDATA[
if (GBrowserIsCompatible()) {
// A function to create the marker and set up the event window
function createMarker(point,name,html) {
var marker = new GMarker(point);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(html);
});
// create the map
var map = new GMap2(document.getElementById("map"));
//map.addControl(new GLargeMapControl());
//map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(39.962598,-76.727745), 10);
map.setUIToDefault();
// Read the data from example.xml
GDownloadUrl("http://domain.com/path/to/xml", function(doc) {
var xmlDoc = GXml.parse(doc);
var markers = xmlDoc.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
// obtain the attribues of each marker
var html = GXml.value(markers[i].getElementsByTagName("infowindow")[0]);
var lat = parseFloat(markers[i].getAttribute("lat"));
var lng = parseFloat(markers[i].getAttribute("lng"));
var point = new GLatLng(lat,lng);
var label = markers[i].getAttribute("label");
// create the marker
var marker = createMarker(point,label,html);
map.addOverlay(marker);
}
});
} else {
alert("Sorry, the Google Maps API is not compatible with this browser");
}
//]]>
</script>
Again, this is specific to Maps API v2, but with a little tweaking it should come to life.