imagemaps with mapscript, part 2

Robert Chavez rchavez at perseus.tufts.edu
Wed Mar 15 10:05:57 PST 2000


Thanks Steve.

I've put together a quick and dirty little Perl routine that does the
job
too, for what it's worth.  Seems to work well so far.

I'm getting the coordinates for the shapes I want to render from a
Postgres
database -- these coordinates are retrieved in another routine and
stored
in @polygon in the form (point1x, point1y, point2x, point2y, point3x,
point3y ...),

Rob

sub create_imagemap {

    #Read image width and height from map file
    $imgwidth = $map->{width};
    $imgheight = $map->{height};

    #@polygon is a simple list that stores the real world coordinates of

the object pulled from the database
    @vertices = @polygon;

    #loop through the list grabbing each x and y coordinate and
converting
the geo-coordinate to image coordinates
    while (@vertices) {

         #grab first coordinate, remove any parentheses
        $xvert = shift(@vertices);
        $xvert =~ s/[\(\)]//g;

         #convert x map coordinate to image coordinates
        $cellsizex = (($map->{extent}->{maxx} -
$map->{extent}->{minx})/($imgwidth - 1));
        $ximg = (($xvert - $map->{extent}->{minx})/$cellsizex);

        #add image coord. to the new list
        push (@imgshape,$ximg);

        #grab second coordinate, remove any parentheses
        $yvert = shift(@vertices);
       $yvert =~ s/[\(\)]//g;

        #convert y map coordinate to image coordinates
        $cellsizey = (($map->{extent}->{maxy} -
$map->{extent}->{miny})/($imgheight - 1));
        $yimg = (($map->{extent}->{maxy} - $yvert)/$cellsizey);

        #add image coord. to the new list
        push (@imgshape,$yimg);

       }

    #form the <area> tag for html output
    $coords = join(",", at imgshape);
    $area = "\<area shape=\"polygon\" coords=\"$coords\"
href=\"URL-HERE\"\>\n";
    print STDERR "$area";
    push (@areas, $area);
}



Stephen Lime wrote:

> The easiest way would be to add a method to a shapeObj to apply a
> map to it. That is to clip, thin and transform the coordinates. It's a

> pretty easy addition. However, I've frozen development until I get the

> webCVS running with the folks at the UMN. It'll be a couple of weeks
> before I can make the changes.
>
> Steve
>
> Stephen Lime




More information about the MapServer-users mailing list