HOW TO DRAW ICONS OR IMAGES ON A MAPSERVER GENERATED
MAP
|
||
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> |
||
|
||