He puesto una prueba
aquí, que puede descargarse completa
aquí.
El código para llamarlo es este:
Código PHP:
<map name="nuevomapa">
<?php include('genera_mapa.php'); ?>
</map>
<img src="genera_mapa.php?accion=imagen" alt="" width="200" height="200" border="0" usemap="#nuevomapa" />
El códígo de la página que lo genera es el siguiente:
Código PHP:
<?php
$datos = array ();
$datos[] = array(10,10,30,170,"provamap2.php?num=1");
$datos[] = array(34,52,54,170,"provamap2.php?num=2");
$datos[] = array(58,24,78,170,"provamap2.php?num=3");
$datos[] = array(82,70,100,170,"provamap2.php?num=4");
if ($_GET["accion"] == "imagen"){
Header("Content-type: image/png");
$image = imagecreate(200,200);
$back = ImageColorAllocate($image,255,255,255);
$border = ImageColorAllocate($image,0,0,0);
$red = ImageColorAllocate($image,255,60,75);
$fill = ImageColorAllocate($image,44,81,150);
ImageFilledRectangle($image,0,0,110,110,$back);
imageline ($image,8,172,170,172,$border);
imageline ($image,8,8,8,172,$border);
for ($a = 0;$a < count($datos);$a++){
ImageFilledRectangle($image,$datos[$a][0],$datos[$a][1],$datos[$a][2],$datos[$a][3],$red);
}
imagePNG($image);
imagedestroy($image);
} else {
for ($a = 0;$a < count($datos);$a++){
$actual = $a + 1;
print '<area shape="rect" coords="'.$datos[$a][0].','.$datos[$a][1].','.$datos[$a][2].','.$datos[$a][3].'" href="provamap2.php?num='.$actual.'" alt="Ver datos" />'."\n";
}
}
?>
Si no hay un $_GET['accion'] el programa genera las areas del mapa con la función print, y si hay un $_GET['accion'] igual a 'imagen' genera la imagen, así tienes en el mismo script la generación de las areas y la imagen. En el ejemplo coge las coordenadas y el link del array $datos. Espero que el código se vea claro...