[SVG] Coordonnées GPS sur une map SVG...

Fermé
Toni-Peinoit - 24 sept. 2009 à 10:57
M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 - 2 oct. 2009 à 16:59
Bonjour à tous,
Je souhaiterais placer des points sur une carte SVG d'après les coordonnées GPS qui se trouve dans une base de données.
Si la création de la carte ne semble pas me poser trop de problèmes, je ne vois pas comment lier coordonnées GPS & coordonnées graphiques.
Auriez-vous quelques pistes, conseils... à me donner ?
Merci - Toni

4 réponses

M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 74
24 sept. 2009 à 11:12
Bonjour,

le mieux est de créer une échelle de coordonnées.

C'est à dire de définir la plage de coordonnées GPS min et max que l'on a, et les replacer dans le SVG au moyen d'une fonction de type y = a*x+b

Je m'explique:

Dans la base de données, il y a bien une longitude minimum L_min et une longitude maximum L_max.

et bien il faut trouver les valeurs de a et b pour que, pour un SVG de 500px de large par exemple, on ai
0 = a* L_min + b
et
500 = a* L_max + b

Ce petit système d'équation suffira pour recadrer toutes les longitudes au bon endroit sur le SVG.

en faisant la même chose pour la latitude, tu peux avoir les deux fonctions permettant de lier latitude et longitude avec hauteur et largeur de ton SVG.
1
Bonjour,
Je travaille également sur une SVG et je souhaiterais changer/charger une autre image à partir du moment où un certain niveau de zoom est atteint sur celle en court. Savez-vous comment est-ce que je peux faire et quelle techno utiliser? Du javascript ? XML ?
Merci d'avance
0
Bonjour M@dien,

Pourrais tu me donner un petit peu plus d'infos STP. Je travaille sur une carte dont les points sont stockés dans une BDD et en constants changements. L_min et L_max seraient alors tout le temps boulversés. Ca ne pose pas de problème ?

Merci
0
M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 74
2 oct. 2009 à 16:59
@Cross: je ne sais pas du tout. il faut pouvoir détecter le niveau de zoom, et cela dépend de ton programme qui affiche le SVG. si le zoom est réalisé par une fonction javascript, il est possible de changer les images également par javascript je pense.

@MichJ: au lieu de gérer L_min et L_max par les valeurs minimales et maximales de la base de donnée, il faut aligner le bord de la carte SVG avec les coordonnées correspondantes.
Je m'explique, par un exemple. Prenons le cas de la carte de France. si les points sont tous inclus en france, il suffit de normer ton SVG selon les coordonnées de la France. Il faut avoir alors une carte SVG précise, sur laquelle on puisse connaître la longitude du bord gauche et la longitude du bord droit. une fois que tu as ces longitudes min et max, qui vont de -5 à 9 environ. si la carte fait 500px de large, alors il faut résoudre les équations suivantes:
0 = a* (-5) + b
500 = a* (9) + b
Ce qui donne a = 35.7 et b = 178.57.
Pour placer les points de la base de données, il faut donc appliquer la fonction x = 35.71* longitude + 178.57.
Par exemple, si on a un point avec la longitude 7, il sera placé à 428px du bord gauche.
0