El mapeo de imágenes sirve para conseguir que diferentes partes de una misma imagen se comporten como enlaces distintos.
El mapeo se consigue con la etiqueta map, que establece el conjunto de zonas a mapear en la imagen, y las etiquetas area, que definen las diferentes zonas interactivas sobre la imagen.
Las áreas pueden definirse como rectángulos, circunferencias, o figuras poligonales. Para ello se usa el atributo shape dentro de la etiqueta area, que tomará los respectivos valores: rect,circ, poly.
Cada área se define con los puntos mínimos necesarios para conseguir esa forma sobre el mapa de píxeles de la imagen. Y cada punto se establece con un par de valores separados por una coma. El primer valor se refiere a los píxeles sobre el eje x (partiendo del extremo izquierdo de la imagen), y el segundo a la posición sobre el eje y (partiendo desde el extremo superior). Estos puntos se definen en el atributo coords separados todos ellos por comas.
Otros atributos de la etiqueta area son los relativos a los enlaces, como href para definir el destino del vínculo, title o target.
Hay que tener en cuenta que la imagen no es troceada ni seccionada de ninguna manera, sino que actua como fondo para las zonas activas que colocaremos sobre ella con las etiquetas mencionadas.
Por último, para vincular una imagen con su mapa usaremos el atributo usemap en la imagen, y el atributo name en el mapa. El valor para ambos atributos debe ser el mismo, pero en el caso de la imagen tiene que llevar delante el carácter #.
IMPORTANTE: Si redefinimos el tamaño de la imagen por CSS después de mapearla, las coordenadas de las áreas no coincidirán con la imagen y el resultado será incorrecto. Es necesario mantener el tamaño de la imagen constante para que coincida con la coordenadas del mapeo.
Veamos los diferentes casos
En este primer caso no hay mapeo. Toda la imagen funciona como un único vínculo.
<a href="#"><img src="lluvia.jpg" alt=""></a>
En este ejemplo definimos 3 zonas rectangulares sobre la imagen, a modo de 3 columnas, una al lado de otra. Cada área está definida por dos puntos, la esquina superior izquierda y la inferior derecha del rectángulo. Y cada punto tiene dos valores, el desplazamiento horizontal y el vertical en píxeles sobre la imagen.
<img src="lluvia.jpg" alt="" usemap="#columnas">
<map name="columnas">
<area shape="rect" coords="0,0,115,196" href="#" alt="sector 1">
<area shape="rect" coords="116,0,230,196" href="https://google.es" alt="sector 2">
<area shape="rect" coords="231,0,350,196" href="#" alt="sector 3">
</map>
En el caso de circunferencias la información de coordenadas es menor, solo es necesario definir el punto que actúa como centro de la circunferencia y su radio. El centro se define con el mismo patrón que los puntos anteriores, y el radio con un valor numérico en píxeles.
<img src="lluvia.jpg" alt="" usemap="#circulos">
<map name="circulos">
<area shape="circ" coords="115,115,80" href="destino1.html" alt="">
<area shape="circ" coords="230,115,40" href="destino2.html" alt="">
Para las figuras poligonales el procedimiento es el mismo, hay que definir cada vértice del polígono. En este caso es necesario paoyarse en alguna herramienta que nos simplifique el proceso de obtener las coordenadas. En este caso hemos usado: http://www.image-map.net/
<img src="espanya.jpg" usemap="#espanya">
<map name="espanya">
<area target="_blank" alt="Zona canarias" title="Zona canarias" href="canarias.html" coords="406,320,564,387" shape="rect">
<area target="_blank" alt="Zona Balear" title="Zona Balear" href="baleares.html" coords="524,222,68" shape="circle">
<area target="_blank" alt="Zona Sur" title="Zona Sur" href="andalucia.html" coords="191,389,229,367,296,358,332,357,351,326,319,293,314,271,246,278,218,259,193,284,169,293,144,282,125,304,122,328,143,334,158,348,164,361,175,385" shape="poly">
<area target="_blank" alt="Zona Centro" title="Zona Centro" href="centro.html" coords="144,183,236,182,289,131,341,140,351,171,374,195,357,221,377,255,324,285,319,268,245,272,216,252,187,278,137,277,142,239,125,208,144,203" shape="poly">
</map>