16-10-2011, 10:47 PM
(Modification du message : 16-10-2011, 10:48 PM par Sephi-Chan.)
Bonjour, toujours sur mon système de carte SVG, je rencontres un problème au niveau de mes tuiles (hexagonales) et des évènements (click, mouseover, mouseout) affichant une tooltip qui affiches lorsque l'on clic sur les bords des tuiles, les infos de la tuiles d'à côté. On est d'accord, il faut utiliser de l'image mapping pour résoudre le problème. Le problème est qu'après recherches, je ne trouves que de l'image mapping avec un seul élément "map" contenant plusieurs éléments "area" pour une seule image(un exemple ici).
Or ceci ne correspond pas vraiment à ma situation puisque je ne me bases pas sur une seule image, mais plusieurs dizaines collées bout-a-bout. Un exemple de code SVG généré actuellement:
J'ai déjà établis la "zone d'action" de chaque tuile hexagonale:
Mais je ne vois pas comment la mettre en place et ne sais même pas s'il cela est réalisable sachant que je n'utiliserais aucun attributs href (l'affichage de la tooltip est basé sur l'évènement onClick de chaque balise "use").
Or ceci ne correspond pas vraiment à ma situation puisque je ne me bases pas sur une seule image, mais plusieurs dizaines collées bout-a-bout. Un exemple de code SVG généré actuellement:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg externalResourcesRequired="true" width="500" height="500" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="init(evt)">
<defs>
<title>Map</title>
<image id="grass" width="38.64" height="29.32" xlink:href="/assets/grass.svg" />
<image id="water" width="38.64" height="29.32" xlink:href="/assets/water.svg" />
<image id="darkgrass" width="38.64" height="29.32" xlink:href="/assets/darkgrass.svg" />
</defs>
<g id="map">
<g class="tuile" id="x:0y:0">
<use xlink:href="#darkgrass" x="253.91472899999832" y="4.668907277118108" />
<text fill="white" visibility="hidden" dx="5" dy="17" class="multi-line">
<tspan>0,0:</tspan>
<tspan dy="1em">Non découvert</tspan>
</text>
</g>
<g class="tuile" id="x:0y:1">
<use xlink:href="#darkgrass" x="229.41983157216654" y="16.916355991034" />
<text fill="white" visibility="hidden" dx="5" dy="17" class="multi-line">
<tspan>0,1:</tspan>
<tspan dy="1em">Non découvert</tspan>
</text>
</g>
<g class="tuile" id="x:0y:2">
<use xlink:href="#darkgrass" x="204.92493414433477" y="29.16380470494989" />
<text fill="white" visibility="hidden" dx="5" dy="17" class="multi-line">
<tspan>0,2:</tspan>
<tspan dy="1em">Non découvert</tspan>
</text>
</g>
</g>
J'ai déjà établis la "zone d'action" de chaque tuile hexagonale:
<map name="basic_tile" id="basic_tile">
<area shape="poly" points="5,3 24,0 39,7 33,17 14,19 0,12 5,3" />
</map>
Mais je ne vois pas comment la mettre en place et ne sais même pas s'il cela est réalisable sachant que je n'utiliserais aucun attributs href (l'affichage de la tooltip est basé sur l'évènement onClick de chaque balise "use").