Pages: 1
- Sujet précédent - google map APi, Tracer des polylignes à partir d'une base de données - Sujet suivant
#1 Tue 16 March 2010 11:28
- renard
- Participant actif
- Date d'inscription: 16 Mar 2010
- Messages: 96
google map APi, Tracer des polylignes à partir d'une base de données
Bonjour,
Je cherche à une tracer un (des) polylignes sur ma carte google map. Les coordonnées necessaires pour tracer ces polylignes se trouvent dans une base de données mysql. Cette base de données étant alimentée par les utilisateurs, le champs comportant les coordonnées prend la forme suivante (23.45,30.50)# (24.58,32.30)# (15.45,20.50)... [il s'agit d'une chaine où les coordonnées sont séparées par un #].
Je vous décris mon raisonnement :
-l'utilisateur trace sa polyligne
-il l'a valide (formulaire html), ainsi les coordonnées sont entrées dans la BDD sous la forme explicitée précédemment
-J'interroge la base de données, j'y récupère la chaine contenant les coordonnées de la polyligne [(23.45,30.50)# (24.58,32.30)# (15.45,20.50)...]
- je coupe la chaine
-j'obtiens un vecteur
C'est à partir d'ici que je bloque. Je n'arrive pas à faire en sorte que mon vecteur contiennent des objets LatLng compréhensible par l'api google pour tracer la polyligne : précision mon vecteur est en PHP (suite à l'interrogation de ma BDD), c'est la transformation en vecteur javascript et de forme LatLng que je n'arrive pas à réaliser.
Merci de votre aide,
Ci dessous mon code
<?php
$db = mysql_connect('localhost', 'root','') or die("erreur connexion");
mysql_select_db('grenardseisme',$db) or die ("erreur connexion bd");
$result = mysql_query('SELECT * FROM randonnee');
while ($row = mysql_fetch_array($result)) {
$coord = $row[0];
$vecteur = explode("#",$coord);
$j = count ($vecteur);
printf("alert('".$j."');"); // vérification, jusqu'içi tout fonctionne
for ($i=0; $i<$j; $i++) {
printf("tableausentier[".$i."] = new GLatLng (".$vecteur[$i].");");
printf("var polyline = new GPolyline(tableausentier,'#FF9601');");
printf("map.addOverlay(polyline);");
}
}
?>
Dernière modification par renard (Tue 16 March 2010 11:29)
Hors ligne
#2 Wed 17 March 2010 09:42
- frsw194
- Juste Inscrit !
- Date d'inscription: 17 Mar 2010
- Messages: 5
Re: google map APi, Tracer des polylignes à partir d'une base de données
Bonjour Renard,
Globalement, votre erreur vient du fait que tentez de tracer des points et non des polylignes. En effet, dans votre code, la variable "tableausentier" ne contient à chaéque fois qu'une seule coordonnée X,Y. Il faut concaténer les coordonnées de votre table pour créer votre objet polyline et alors ajouter l'overlay.
Exemple :
poly = new GPolyline([new GLatLng(47.31215715012075, 1.0809472202709003),new GLatLng(47.31253540668588, 1.0804429649761005),new GLatLng(47.31272453395319, 1.080432236140041),new GLatLng(47.31291366054365, 1.080432236140041),new GLatLng(47.31373562593908, 1.0809472202709003)], "#333366", 2, 0.7, "#333366", 0.2);
map.addOverlay(poly);
Bon courage
Olivier
P.S. : J'espère que votre sentier se trouve bien en Egypte...
Hors ligne
#3 Wed 17 March 2010 14:21
- renard
- Participant actif
- Date d'inscription: 16 Mar 2010
- Messages: 96
Re: google map APi, Tracer des polylignes à partir d'une base de données
merci pour ton aide, voici la solution que j'ai trouvé. C'est un peu du bricolage je découpe deux fois ma chaine (une fois par # pour les coordonnées de chacun des points composant la polyligne, puis une seconde fois par ',' pour séparer les X et Y, ensuite je construis un vecteur tout en utilisant le new GLatLng pour que ma chaine soit bien en coordonnées.
voila le code :
<?php
$db = mysql_connect('localhost', 'root','') or die("erreur connexion");
mysql_select_db('renardseisme',$db) or die ("erreur connexion bd");
$result = mysql_query('SELECT * FROM randonnee');
while ($row = mysql_fetch_array($result)) {
$coord = $row[0];
$vecteur = explode("#",$coord);
$j = count ($vecteur);
for ($i=0; $i<$j; $i++) {
$latilong= explode(",",$vecteur[$i]);
$aremplace=array("(",")");
$remplace= str_replace ($aremplace, "", $latilong);
printf("var coord = new GLatLng (".$remplace[0].",".$remplace[1].");");
printf("tableausentier[".$i."] = coord;");
}
printf("var polyline = new GPolyline(tableausentier,'#FF9601');");
printf("map.addOverlay(polyline);");
}
?>
ps: mes sentiers (d'essais) traversent le monde
Dernière modification par renard (Mon 03 May 2010 22:34)
Hors ligne
Pages: 1
- Sujet précédent - google map APi, Tracer des polylignes à partir d'une base de données - Sujet suivant