banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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 wink

Dernière modification par renard (Mon 03 May 2010 22:34)

Hors ligne

 

Pied de page des forums

Powered by FluxBB