Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/02/2011, 14h18   #1
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
Par défaut [SVG 1.1] Affichage d'une couche GEOMETRY

Bonjour,

Je ne sais pas si c'est le forum adéquat pour ce message. Mais, puisque j'utilise javascript, j'ai décidé de le mettre ici.

J'ai une table "polygones" stockée sur une BD PostGIS 1.5. La colonne géométrique est de type GEOMETRY. Ce que je veux c'est afficher ces polygones sur un navigateur web.
Pour cela, je me suis connecté à la BD avec PHP pour récupérer les champs de type GEOMETRY de tous les polygones. Ensuite, je les ai transformé en PATH avec la fonction st_assvg(). Finalement, avec du javascript, j'ai créé l'élément SVG et les éléments PATH fils de ce dernier en utilisant la fonction createElementNS().
Le problème est que je n'arrive pas à afficher ces éléments PATH sur le navigateur.

Est-ce que j'ai oublié une étape ? Faut-il traiter l'échelle d'affichage et le système de coordonnées ?

Ce que je ne comprend pas est que lorsque je crée un élément autre que PATH ça marche.

Par exemple une ligne s'affiche correctement sur FF et Chrome (mais pas sur IE)

Code :
1
2
3
4
5
6
7
8
var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
var line = document.createElementNS("http://www.w3.org/2000/svg", "line");
                line.setAttribute("x1", 200);
                line.setAttribute("y1", 0);
                line.setAttribute("x2", 0);
                line.setAttribute("y2", 200);
                line.setAttribute("stroke", "black");
                svg.appendChild(line);
Alors qu'un PATH ne s'affiche pas.
Code :
1
2
3
pa=document.createElementNS("http://www.w3.org/2000/svg", "path");
                pa.setAttribute('d','M-2208 1425l-4 4 -7 17 -8 14 -12 12 -7 7');
                svg.appendChild(pa);
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 21h28   #2
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
Résolu.

Il vaut mieux utiliser une balise "<embed/>" et ajouter le svg comme un plugin. j'ai fait donc :
Code :
1
2
 
<embed src='image.svg' width='1000' height='1000' type='image/svg+xml' pluginspage='http://www.adobe.com/svg/viewer/install/' />
Et dans src je mets le chemin vers le fichier svg créé proprement en xml. Par exemple :
Code :
1
2
3
4
5
6
 
<?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 style='cursor:crosshair' width='1000' height='1000' version='1.1' xmlns='http://www.w3.org/2000/svg'>
<path fill='lightsteelblue' stroke='midnightblue' stroke-width='5' d='M 10 10 L 10 20 20 20 20 15 Z'/>
</svg>
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 08h50   #3
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 419
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 419
Points : 2 806
Points : 2 806
non ce n'est pas le mieux
mais malheureusement IE ne gère pas le SVG
(enfin il y vient dans ces dernière versions)

donc pas le choix soit tu détecte le suport du SVG par le navigateur et tu te passe du embed soit tu en passe par le plugin
A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h37.


 
 
 
 
Partenaires

Hébergement Web