I currently have a map on my website that is displaying 50,000 markers. These were un readable to the user due to cluttering so I implemented a clustering solution using google's markerclusterer. This works ok but due to the amount of markers, it is incrediably slow to load.
I would like to use a server side solution in the form of php but can not find out the best way to do this. This is my current setup
External php file markers-xml.php
<?php
$SQL = "SELECT MarkerName, Lat, Lng FROM TableName WHERE MarkerName !=''";
$Query = mysql_query($SQL);
$NumRows = mysql_num_rows($Query);
?>
<markers>
<?php
for($i = 0; $i < $NumRows; $i++)
{
$row = mysql_fetch_assoc($Query);
$Lat = $row['Lat'];
$Lng = $row['Lng'];
$MarkerName = $row['MarkerName'];
echo "<marker Lat='$Lat' Lng='$Lng' MarkerName='$MarkerName'> </marker>\n";
}
?>
</markers>
Main file conataining map
function initialize(mapvars) {
var xmldata = "markers-xml.php";
downloadUrl(xmldata, function(doc) {
var xml = xmlParse(doc);
var markersInfo = xml.documentElement.getElementsByTagName("marker");
var markers = [];
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < markersInfo.length; i++) {
var Lat = parseFloat(markersInfo[i].getAttribute("Lat"));
var Lng = parseFloat(markersInfo[i].getAttribute("Lng"));
var point = new google.maps.LatLng(Lat,Lng);
var MarkerName = markersInfo[i].getAttribute("MarkerName");
var marker = new google.maps.Marker({
position: point,
map: map,
title: MarkerName,
MarkerName: MarkerName
});
markers.push(marker);
bounds.extend(point);
}
var markerCluster = new MarkerClusterer(map, markers);
}