The easiest solution is to draw the polygon directly onto the map with an alpha component specified in the color. The following is a complete program that demonstrates:
<?PHP
header("Content-type: image/png");
$points = array(10, 10, 10, 40, 50, 20); //Just here for an example :)
$polygonColor = 0xff0000;
define("TRANS25", 0x5f000000); //I like to define alpha values in an include file so I don't
define("TRANS50", 0x40000000); //have to do the computations over and over. These are a few
define("TRANS75", 0x20000000); //common ones, just remember that higer values are more transparent.
$map = imagecreatefrompng("map.png");
imagealphablending($map, TRUE); //this is the key line, without this alpha blending is turned off.
// this line just demonstrates how to use the predefined transparencies, just OR the color with the trans.
imagefilledpolygon($map, $points, count($points) / 2, $polygonColor | TRANS25);
imagepng($map);
?>