Por lo que entiendo del código, la función dibujarMapa, carga las coordenadas las traduce a coordenadas de googleMaps, y las guarda en un array. Lo que tendrías que hacer es guardar esos datos en un array externo de la función y usarlo después, quitando el código html y javascript de dentro de la función. Algo así:
Código PHP:
<?
function dibujarmapa(){
$plantas=consulta_todas_plantas();
$datos=array();
$i=0;
foreach($plantas->row as $row){
$pl=consulta_datosplanta_segun_id_planta($row->id_installation);
if ($pl->row->latitude_degree>0){
$lat=round($pl->row->latitude_degree+($pl->row->latitude_minute/60),3);
}else{
$lat=round($pl->row->latitude_degree-($pl->row->latitude_minute/60),3);
}
if ($pl->row->longitude_degree>0){
$long=round($pl->row->longitude_degree+($pl->row->longitude_minute/60),3);
}else{
$long=round($pl->row->longitude_degree-($pl->row->longitude_minute/60),3);
}
$datos[$i][0]=$lat;
$datos[$i][1]=$long;
$i++;
//echo $row->name." ".$lat." ".$long."<br>";
}
return $datos;
}
?>
<?php $coordenadas = dibujarmapa(); ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Google estado_historico_grupo JavaScript API Example</title>
<script src="http://maps.google.com/maps?file=api&v=2&hl=es&key=clave" charset="iso-8859-1"
type="text/javascript"></script>
<script type="text/javascript">
function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
//map.setMapType(new GMapType("G_HYBRID_MAP"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(40,-3), 5);//centrar en madrid
// Create our "tiny" marker icon
var icon = new GIcon();
icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
icon.iconSize = new GSize(12, 20);
icon.shadowSize = new GSize(22, 20);
icon.iconAnchor = new GPoint(6, 20);
icon.infoWindowAnchor = new GPoint(5, 1);
//situar el icono
var point = new GLatLng(<?php echo $coordenadas[0][0]; ?>, <?php echo $coordenadas[0][1]; ?>);//aqui iría el acceso al array pero no sé cómo hacerlo
map.addOverlay(new GMarker(point, icon));
map.setMapType(G_HYBRID_TYPE);
}
}
</script>
</head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 500px; height: 300px"></div>
</body>
</html>
Donde $coordenadas tiene los datos de las coordenadas de los mapas. Luego sólo tienes que mostrarlos dentro del javascript con <?php echo $coordenadas[0][0]; ?> y <?php echo $coordenadas[0][1]; ?>, el primer índice indica el mapa que quieres mostrar y el segundo 0 para latitud y 1 para longitud.