OVH Cloud OVH Cloud

du texte sur une image

6 réponses
Avatar
*yes*
Aidez moi, je cale !!

Bonjour,

je gère un site qui recence un annuaire de clubs.
jusqu'à présent on gérait notre liste par ordre alphabétique, et là on
voudrait mettre une carte (par région) et "coller par dessus" chaque
ville où il y a un club.

Les clubs sont dans une base mysql , donc j'ai eu une idée :
ajouter 2 champs "coordx" et "coordy" , afin d'appliquer sur chaque
image de région une zone texte avec le nom du club.

à l'heure actuelle, j'ai créé un tableau de 480x480, l'image de la
région est dans un TD , en background.

problème : je n'ai pas DU TOUT la moindre idée de la méthode
d'affichage.
quelqu'un a t-il une idée ?
merci d'avance.

Merci !

6 réponses

Avatar
Guillaume Bouchard
*yes* wrote:
Aidez moi, je cale !!


Cela arrive, après le bonjour normalement ?

Bonjour,


Bonjour :)

je gère un site qui recence un annuaire de clubs.
jusqu'à présent on gérait notre liste par ordre alphabétique, et là on
voudrait mettre une carte (par région) et "coller par dessus" chaque
ville où il y a un club.


Ok.

Les clubs sont dans une base mysql , donc j'ai eu une idée :
ajouter 2 champs "coordx" et "coordy" , afin d'appliquer sur chaque
image de région une zone texte avec le nom du club.


Ok.

problème : je n'ai pas DU TOUT la moindre idée de la méthode
d'affichage.


Deux solutions me viennent à l'esprit :

- Positionenement de ton bloc de text avec des CSS (ou avec les MAP en
Html, mais je ne sais plus/pas faire)


<td class="region">
<span style="left: Xpx; top: Xpx;">Ville</span>
</td>

Et dans le CSS:


.region {
position: relative;
background: url(image);
}
.region span {
position: absolute;
}

C'est loin d'être propre...

Solution numero deux, pourquoi ne pas generer dynamiquement ton image
avec php ?

http://fr.php.net/gd
http://fr.php.net/manual/fr/function.imagefttext.php

Bonne chance.

--
Guillaume.

Avatar
Nadine St-Amand
*yes* wrote:
Bonjour,


Bonjour,

Les clubs sont dans une base mysql , donc j'ai eu une idée :
ajouter 2 champs "coordx" et "coordy" , afin d'appliquer sur chaque
image de région une zone texte avec le nom du club.


Bonne idee :)

problème : je n'ai pas DU TOUT la moindre idée de la méthode
d'affichage


l'image peut etre en background ou ne pas l'etre, cela n'a pas
d'importance, car en utilisant des zone div
si on met l'attribut position:absolute;
le positionnement se superpose aux autres elements

il faut faire attention a internet explorer qui parfoit interprete mal
les position absolute des elements cascades

Exemple (code dans ma tete, pas teste):

<div style="position:relative;top:0px;left:0px;">

<img src="carte.jpg">
<div style="position:absolute;top:10px;left:50px;">Ville 1</div>
<div style="position:absolute;top:230px;left:100px;">Ville 2</div>

</div>

Les div des villes devraient aller par dessus la carte.


***********************************

Ce a quoi il faut faire attention :
c'est que dans internet explorer,
les "absolute" seront souvent consideres par rapport a la page et non
pas par rapport au container.
Je ne me souviens plus du truc pour corriger cela, mais c'est tres
important de positionner la div externe container, ce sont ses attributs
qui influent si le comportement des elements contenus .

************************************

Puisque tu mets l'image en background,
tu n'as peut-etre plus besoin de la superposition des absolute
et alors l'autre solution est de faire des div relative a la case <td>

<td avec image en background>

<div style="position:relative;top:5px;left:30px;">Ville 1</div>
<div style="position:relative;top:36px;left:100px;">Ville 2</div>

</td>


Ainsi les villes seront positionnees dans la case.

--
Nadine St-Amand
Génération de code, sql2php : http://www.phpbackend.com/

Avatar
FightClub!
*yes* wrote:

l'image peut etre en background ou ne pas l'etre, cela n'a pas
d'importance, car en utilisant des zone div


un peu si quand même en fait :)
quand on désactive l'impression des fonds de page dans IE, ça n'imprime
plus les background, si c'est une page susceptible d'être imprimée (pour
une carte c'est souvent le cas) il vaut mieux superposer plusieurs layer

juste mes 0.01 cts :)

--

http://SurveilleTonSite.sd2i.org
Alerte gratuite par mail en cas de problème sur votre site.

Avatar
P'tit Marcel
*yes* wrote:
je gère un site qui recence un annuaire de clubs.
jusqu'à présent on gérait notre liste par ordre alphabétique, et là on
voudrait mettre une carte (par région) et "coller par dessus" chaque
ville où il y a un club.


Salut,

Voici une solution pas aussi classe que les CSS de guillaume de
guillemets ou le "position:absolute" de Nadine. Le code HTML n'est
peut-être pas TTA mais en tout cas ça marche avec Mozilla comme avec IE:

# traitement de l'image
# ajout des gommettes bleu où ça va bien
# et définition des zones actives de l'image
list($max_x,$max_y)=getimagesize('France.png');
$image=imagecreatefrompng('France.png'); # une carte de France
$rond=imagecreatefrompng('rond.png'); # un rond bleu pour chaque ville
$rayon=imagesx($rond)/2;
echo "<map name='carte'>n";
for ($i=0; $i< sizeof($tab) ; $i++) {
# $x, $y sont les coordonnées de chaque ville
# $ville est le nom de la ville
list($x,$y,$ville) = explode("|" ,$tab[$i]);
# ajout rond bleu sur les coordonnées de la ville
imagecopy($image,$rond,max(1,$x-$rayon),
max(1,$y-$rayon),0,0,$rayon*2,$rayon*2);
# zone cliquable sur le rond
echo "<area shape=circle coords='$x,$y,$rayon'
href='lapage.php?ville=".urlencode($ville).
"' title='$ville' alt='$ville'>n";
}
echo "</map>n";

# création d'un fichier temporaire
# (nb: le user nobody doit avoir l'accès en écriture au fichier créé)
$ret=imagepng($image,'./Francetemp.png');
if (!$ret) echo "Erreur: le fichier Francetemp.png doit être en accès
libre!<br>";

# affichage de l'image composite
?>
<div alignÎnter>
<img src='Francetemp.png' usemap='#carte' align='center' border=0>
</div>
<?php


eça
--
P'tit Marcel

Avatar
__marc.quinton__
P'tit Marcel wrote:

Voici une solution pas aussi classe que les CSS de guillaume de
guillemets ou le "position:absolute" de Nadine. Le code HTML n'est
peut-être pas TTA mais en tout cas ça marche avec Mozilla comme avec IE:



c'est aussi mon point de vue :

* bien plus portable,
* et tout aussi efficasse.

Pour ma part j'utilise plutot les png, mais il semble que IE n'apprécie
pas trop.

concernant l'interfacage, on pourrait envisager :

* de recuperer des points en coordonnées geographique,
* de "calibrer" une carte de france pixelisée,
* ou de disposer d'une carte vectorielle
* et d'afficher de tout.

enfin tout depend du degres d'importance de ton application.

Avatar
P'tit Marcel
wrote:

Pour ma part j'utilise plutot les png, mais il semble que IE
n'apprécie pas trop.


moi aussi et oui


concernant l'interfacage, on pourrait envisager :
* de recuperer des points en coordonnées geographique,
* de "calibrer" une carte de france pixelisée,

* et d'afficher de tout.


C'est effectivement ainsi que marche le script dont j'ai extrait ce code
php. Je pars d'une table qui fournit les coordonnées UTM pour chaque
code postal, que je convertis en pixels avec deux bêtes fonctions affines.