En primer lugar, puedes optimizar el código Javascript de esta manera:
Código PHP:
Ver original<?php
$addresses[] = "$direccion, $zona";
}
if (count($addresses) > 0) { ?>
function showLocation(point) {
var marker = new GMarker(point);
map.addOverLay(marker);
// Etiqueta
GEvent.addListener(marker, "click", function (){
var label = "etiqueta con datos y demas...";
this.openInfoWindowHtml(label);
});
}
for (i = 0; i < addresses.length; i++) {
geocoder.getLatLng(addresses[i], showLocation);
}
<?php } ?>
Otra sugerencia es almacenar en la base de datos una caché de las coordenadas de las direcciones, de modo que no tengas que llamar a getLatLng() cada vez que se carga la página.