Qu'est-ce que c'est exactement?

Un Imagemap est une image incluse dans une page HTML qui, lorsque vous cliquez dessus, vous renvoie vers une autre URL. Jusque là, rien de bien étonnant... si ce n'est le fait que l'URL sur laquelle vous allez être renvoyé dépend de l'endroit précis de l'Imagemap sur lequel vous avez cliqué.

Voici une petite démonstration dans laquelle vous serez renvoyé vers une page HTML différente selon que vous cliquiez sur le rectangle, le cercle ou le fond de l'image:

 

  (cet exemple ne peut pas fonctionner sur ce serveur, désolé.)

Bien sûr, cet exemple n'est pas d'une grande utilité en soi. Quelques applications pratiques de l'Imagemap sont:

  • Barre d'icônes permettant d'accéder à différentes fonctions
  • Plan de bâtiment permettant d'accéder aux différents salles
  • Photo permettant d'obtenir des informations sur tel ou tel détail

Comment ca marche?

Il existe plusieurs méthodes pour gérer un Imagemap:

  • Lorsque vous cliquez sur l'image, le client envoie les coordonnées exactes (en pixels) de l'endroit sur lequel vous avez cliqué à un petit programme CGI (exécuté sur le serveur) qui se charge ensuite de vous rediriger vers l'URL associée à la zone dans laquelle vous avez cliqué.

    Cette méthode fonctionne avec la quasi totalité des serveurs HTTP et il vous suffit de disposer de l'utilitaire imagemap dans le dossier cgi-bin

  • Les serveurs HTTP les plus récents tels que NCSA HTTPd version 1.5 intègrent directement la gestion des Imagemap et il n'est plus nécessaire de passer par un quelconque module CGI.

    Cette méthode est beaucoup plus efficace que la précédente et nous vous recommandons vivement de l'utiliser si votre serveur la supporte.

  • Les clients les plus récents tels que Netscape Navigator 2 offrent la possibilité de gérer ce que l'on appelle des Client-Side Imagemaps. Dans ce cas, c'est le client qui s'occupe de déterminer dans quelle zone vous avez cliqué et qui fait directement la requête vers l'URL correspondante.

    C'est de loin la méthode la plus efficace en termes de performances. Ceci dit, très peu d'utilisateurs disposent à ce jour d'un client compatible avec cette méthode!

ATTENTION: Dans ce qui suit, nous expliquons comment mettre en oeuvre la première méthode (universelle): utilisation d'un script CGI.


Méthode à suivre

1-Installation du module CGI imagemap

Le module CGI imagemap est généralement fourni avec votre serveur HTTP. Il doit se trouver dans le répertoire cgi-bin.

Si le répertoire cgi-bin de votre serveur ne contient pas ce module, vous avez deux solutions:

  • Si vous avez accès en écriture au répertoire cgi-bin, vous pouvez vous procurer le module et l'installer vous même.
  • Sinon, demandez à l'administrateur de votre serveur de s'en charger...

2-Créer l'Imagemap

Votre Imagemap sera en fait constitué de deux parties:

  • L'image en elle même, telle qu'elle apparaîtra à l'écran. Elle doit être au format GIF.
  • Le fichier décrivant les différentes régions de l'image et leur URL associée. Il s'agit d'un fichier texte auquel on donnera en général l'extension .MAP.

L'image GIF sera créée avec vos outils de dessin favoris. Quant au fichier .MAP, vous pourrez soit utiliser un utilitaire adapté tel que mapedit , soit l'écrire à la main...

ATTENTION: Dans ce qui suit, nous expliquons la syntaxe de .MAP de NCSA, par opposition à la syntaxe CERN.

Le fichier .MAP utilisé pour l'exemple donné plus haut est le suivant:

default /~fplanque/Publier/imapdef.html
#rectangle
rect    /~fplanque/Publier/imapbox.html 11,12 52,47 
#cercle
circle  /~fplanque/Publier/imapcir.html 73,68 81,91 

Les lignes commençant par un # sont des commentaires. Les autres lignes définissent des zones. Chaque ligne consiste en une indication de la forme de la zone, suivie de l'URL associée, suivie d'un certain nombre de coordonnées x,y en pixels, relatives au coin supérieur gauche de l'image et définissant la zone en question.

Les différentes formes disponibles sont les suivantes:

default
Définit l'URL par défaut. 
Coordonnées: aucune
rect
Définit un rectangle. 
Coordonnées: haut-gauche bas-droit
circle
Définit un cercle (un disque pour être précis). 
Coordonnées: centre un_point_du_périmetre
poly
Définit un polygone de 100 sommets au plus. 
Coordonnées: coordonnées de tous les sommets
point
Définit un point, l'URL retenu sera alors celle du point le plus proche de l'endroit ou l'utilisateur a clique. 
Coordonnées: le_point

3-Intégrer l'Imagemap dans une page HTML

L'Imagemap de l'exemple donné plus haut a été inclus dans cette page HTML de la manière suivante:

<A HREF="http://www.dom.org/cgi-bin/imagemap/~fplanque/Publier/imap.map">
  <IMG SRC="imap.gif" ISMAP>
</A>

Vous devez donc commencer par intégrer l'image GIF dans votre page HTML au moyen du marqueur IMG. Notez la présence de l'attribut ISMAP. C'est grâce à la présence de cet attribut que le client saura qu'il faut envoyer les coordonnées précises du point de l'image sur lequel on a cliqué.

Vous devez ensuite inclure cette image dans un lien au moyen du marqueur <A>. Vous ferez référence au module CGI qui traite les imagemaps (ici http://www.dom.org/cgi-bin/imagemap) et vous ajouterez derrière le chemin d'accès au fichier .MAP (ici /~fplanque/Publier/imap.map). Ce chemin d'accès (extra PATH_INFO) sera transmis au module CGI imagemap qui saura ainsi où trouver le fichier .MAP.


Autres sources d'informations

  • mapedit, un petit utilitaire permettant de générer graphiquement les fichiers .map (existe sur différentes plates-formes).