HOW TO DRAW ICONS OR IMAGES ON A MAPSERVER GENERATED MAP
(c)2005 by Roberto Colonello - Parsec Tech srl

 

The PHPMapscript code
Here is the code I have used for generating the map:
<?php
dl("php_mapscript.dll");

define("img_WIDTH", 0);
define("img_HEIGHT", 1);
define("img_TYPE", 2);

// CONFIGURATION OF MYSQL ACCESS
$MyHost = "localhost";
$MyLogin = "root";
$MyPassword = "";
$MyDatabase = "mapexample";

$mappath = "D:/data/web";
$scale_to_showicons = 1000000; // SCALE LIMIT TO START TO SHOW THE ICONS ON THE MAP

function AddImagesToMap($mapurl)
{
    global $MyHost, $MyLogin, $MyPassword, $MyDatabase, $scale_to_showicons, $map, $mappath; 
    // CONNECT TO DATABASE
    @mysql_connect($MyHost, $MyLogin, $MyPassword);
    @mysql_select_db($MyDatabase); 
    // IF the scale is small enougth to show the images on the map?
    if ($scale_to_showicons > $map->scale) {
        // PATH WHERE TO FIND THE MAP IMAGE GENERATED BY MAPSERVER
        $mapimagepath = $mappath . $mapurl;
        $mapdim = GetImageSize($mapimagepath);
        $coords_map_width = $map->extent->maxx - $map->extent->minx;
        $mapscale = $mapdim[img_WIDTH] / $coords_map_width;
        switch ($mapdim[img_TYPE]) {
            case 1:
                $mapimg = ImageCreateFromGif($mapimagepath);
                break;

            case 2:
                $mapimg = ImageCreateFromJpeg($mapimagepath);
                break;

            case 3:
                $mapimg = ImageCreateFromPng($mapimagepath);
                break;
        } ;

        $qry .= "select * from weather where x > '" . $map->extent->minx . "' AND x < '" . $map->extent->maxx . "' 
		AND y > '" . $map->extent->miny . "' AND y < '" . $map->extent->maxy . "'";
        $res = mysql_query($qry); 

        while ($row = mysql_fetch_object($res)) {
            $dimic = GetImageSize($row->imagepath);

            switch ($dimic[img_TYPE]) {
                case 1:
                    $tmpimg = ImageCreateFromGif($row->imagepath);
                    break;

                case 2:
                    $tmpimg =?; ImageCreateFromJpeg($row->imagepath);
                    break;

                case 3:
                    $tmpimg = ImageCreateFromPng($row->imagepath);
                    break;
            } 

            $x = ($row->x - $map->extent->minx) * $mapscale;
            $y = $mapdim[img_HEIGHT] - (($row->y - $map->extent->miny) * $mapscale);
            @ImageCopy ($mapimg, $tmpimg, $x, $y, 0, 0, $dimic[img_WIDTH], $dimic[img_HEIGHT]);
        } ; 
        // SAVE THE NEW IMAGE ON THE OLD ONE
        switch ($mapdim[img_TYPE]) {
            case 1:
                ImageGif($mapimg, $mapimagepath);
                break;
            case 2:
                ImageJpeg($mapimg, $mapimagepath);
                break;
            case 3:
                ImagePng($mapimg, $mapimagepath);
                break;
        } 
    } ;
} ;

$map = ms_newMapObj("itasca.map");

$img = $map->draw();
$url = $img->saveWebImage();
AddImagesToMap($url);

?>
<HTML>
<HEAD>
<TITLE>Show Weather On Map</TITLE>
</HEAD>
<BODY>
<img src="<?php echo $url; ?>">
</BODY>
</HTML>
 
<--- The Database
(C)2005 Roberto Colonello
Parsec Tech srl
39012 - Merano (BZ) - ITALY
roberto@parsec.it