An imagemap is a graphical way to present hyperlink information. Basically, the image contains locations the user can select, and he will be taken to a new document depending on the location he chose. Since this is usually only possible on a graphical browser, "clicking" and "selecting" have become synonyms for choosing locations on imagemaps.
The map is a collection of shapes, sets of coordinates, and locations. The imagemap processor uses this to determine which coordinates correspond to which destinations. Until recently, this processing script always ran on the server and not on the client.
Running the processing script on the server has an obvious disadvantage. It's impossible to know where a specific location on the map will take you, as only the server knows that. This means the user doesn't get the feedback he normally gets when he is about to select a link.
Also, this method requires two network accesses; one to submit the selected location, and one to go to the corresponding document. Client-side imagemaps solve both problems. The map information is sent to the browser, so it can immediately determine where to go. This can then be shown to the user, who now gets the feedback he is used to.
A client-side imagemap is constructed with two new HTML elements: MAP and AREA. The MAP element specifies the map information, and it contains AREA elements for each hotzone in this map. An AREA element specifies the coordinates for a hotzone (area) of the map, the destination location and alternative text for non-graphical browsers.
To display the actual image used for the map, you use the IMG element with a new attribute: USEMAP. This attribute points to the location of the map. It must contain an anchor, specifying the name you assigned to the map.
For example, <IMG SRC="mymap.gif" WIDTH=100 HEIGHT=50 USEMAP="#mymap"> would tell the browser the imagemap information for this image is at location "#mymap" in the current document.
Note that pointing to an imagemap outside the current document does not work in all browsers. Although this is a bug, try to embed the imagemap information in the same document as the image.
The MAP tag is a "wrapper" for the areas which define this map. It has one attribute, NAME. The name of the map should be the same as the name to which the corresponding IMG tag points. Using the example above, you would use <MAP NAME="mymap"> for the imagemap belonging to that image.
The AREA elements, inside the MAP, each set up one destination for an area in the imagemap. This area, or hotzone, is defined with the SHAPE and COORDS attributes. The COORDS attribute specifies the coordinates for the area, depending on the shape defined with the SHAPE attribute. Note that in an imagemap, (0,0) is the upper left corner, and (n-1, m-1) the bottom right corner of an image which is n pixels wide and m pixels high. Coordinates are separated by commas.
The SHAPE attribute specifies the shape of this area, and can be one of the following:
Each AREA tag should also have the HREF attribute, pointing to the destination for this area, or the NOHREF attribute. This attribute specifies that this area does not lead anywhere.
Also, ALT text must be supplied. This text will be shown by non-graphical browsers, and it will be linked to the URL specified in the HREF attribute if present. Note that if you do not supply ALT text, your document will not validate.
In this example, the image below will be used as as client-side imagemap. I know it's an ugly image, but that's not the point right now. :-). To set up the imagemap, first determine all the areas and where they should lead to. Then, include the image and point it to the map.
<IMG SRC="imagemap.gif" WIDTH=176 HEIGHT=285 USEMAP="#mymap">
This image has four hotzones. The circle at the bottom, next to the "WDG" text, is the WDG logo and should take a user to the WDG main page. The two white triangles above it should go (from top to bottom) to the main index for the reference section and to the index for the HTML Basics series. The triangle on the right should go to the Wilbur index. And lastly, the red box at the top will go to the W3C's index on HTML. The rest of the image should not be clickable.
Determining the exact coordinates can be a tiresome task if you have to do it by hand. Fortunately, several programs to do this for you are available. You can use programs which create server-side imagemaps as well, although you'll have to do some editing to turn it into a proper client-side map.
The MAP part of this imagemap looks as follows:
<MAP NAME="mymap"> <AREA SHAPE="circle" COORDS="51,229,18" HREF="/" ALT="WDG Home"> <AREA SHAPE="rect" COORDS="28,28,143,67" HREF="http://www.w3.org/pub/WWW/Markup/" ALT="W3C HTML reference"> <AREA SHAPE="poly" COORDS="28,133,28,74,134,102" HREF="/reference/" ALT="Reference"> <AREA SHAPE="poly" COORDS="28,139,28,199,134,167" HREF="/reference/basics/" ALT="HTML Basics"> <AREA SHAPE="poly" COORDS="38,136,143,165,143,135" HREF="/reference/wilbur/" ALT="Tag overview"> <AREA SHAPE="default" NOHREF> </MAP>
Not all browsers support client-side imagemaps. The best way to compensate for this is to supply a server-side imagemap as well. This can be done by wrapping the IMG tag inside an A tag, and adding the ISMAP attribute. The anchor should point to the imagemap on the server as usual. A browser which supports client-side maps will ignore the server-side map.
Copyright © 1996 Arnoud "Galactus" Engelfriet.