Problème api google map v3

eric204044 Messages postés 35 Statut Membre -  
eric204044 Messages postés 35 Statut Membre -
Bonjour à tous

Voilà j'ai un problème, en fait j'utilise l'api google map v3 et j'ai une table sql contenant 2 champs : longitude et latitude.
j'aimerais récupérer chacun de ces couples longitude-latitude et placer un marqueur sur ma carte à l'endroit.
je n'arrive pas à récupérer les valeurs de ma table ni à effectuer la boucle sur le marqueur.
Est ce que vous pourriez m'aider s'il vous plait?je suis à court d'idées.
je m'inspire du code http://code.google.com/intl/fr/apis/ma [...] t/events.html
et j'ai réussi à créer une carte à partir d'un couple bien précis de longitude_latitude,que je passe en paramètre d'une fonction,mais avec la base de données je n'y arrive plus du tout.
A voir également:

10 réponses

avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Salut.

Il faut générer le Javascript en PHP.

Par exemple :
$sql = 'SELECT * FROM table';
$req = $pdo->query($sql);

while($coords = $req->fetch()) {
    $lng = $coords['lng'];
    $lat = $coords['lat'];

    // Création du point
    echo 'point = new google.maps.LatLng('.$lat.','.$lng.');'."\n";

    // Création du marqueur
    echo 'coords = new google.maps.marker({'."\n"
     . 'position: point,'."\n"
     . 'map: map,'."\n"
     . 'title: "Titre du marqueur"'."\n"
    .'});'."\n\n";
}


J'ai codé directement dans le formulaire, il y a peut-être des erreurs de syntaxe.
0
eric204044 Messages postés 35 Statut Membre
 
Merci beaucoup pour ta réponse, je vais tester ça et je te tiens au courant :-)
Merci encore
0
eric204044 Messages postés 35 Statut Membre
 
J'ai écris ça comme code,mais ça affiche une erreur comme quoi longitude_user et latitude_user n'existent pas,alors que ma table existe bien.
Si tu as une idée,
merci par avance

<?php
$serveur = mysql_connect("localhost","root","");
if (!$serveur)
{
die('Non connecté'. mysql_error());
}

$bd = mysql_select_db('mabase', $serveur);
if (!$bd)
{
die ('Impossible d\'utiliser la base :'. mysql_error());
}

$sql = 'SELECT longitude_user,latitude_user FROM table';
$result=mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());

while($coords = mysql_fetch_array($result, MYSQL_NUM) ) {
$lng = $coords['longitude_user'];
$lat = $coords['latitude_user'];

// Création du point
//echo 'point = new google.maps.LatLng('.$lat.','.$lng.');'."\n";

// Création du marqueur
/*echo 'coords = new google.maps.marker({'."\n"
. 'position: point,'."\n"
. 'map: map,'."\n"
. 'title: "Titre du marqueur"'."\n"
.'});'."\n\n"; */
}

?>
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Fais un copier/coller de l'erreur.

Deux remarques au passage :
- À la ligne « . 'map: map'."\n" », remplace le second "map" par la variable représentant la carte (créée avec « new google.maps.Map »)
- Si tu ne souhaites afficher qu'un point de ta table (la position d'un membre par exemple), inutile d'utiliser une boucle
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eric204044 Messages postés 35 Statut Membre
 
Salut,
J'ai réussi à avoir accès à tous les éléments de mes tableaux lng et lat,mais je ne sais pas comment avoir accès à chacun des éléments pour initialiser chacun des points.
Le problème est que la création doit se faire normalement si j'ai bien compris dans la fonction initialize,donc je ne sais pas du tout comment faire.
Voici mon code :
<?php
$serveur = mysql_connect("localhost","root","");
if (!$serveur)
{
die('Non connecté'. mysql_error());
}

$bd = mysql_select_db('mabase', $serveur);
if (!$bd)
{
die ('Impossible d\'utiliser la base :'. mysql_error());
}

$sql = 'SELECT longitude_user,latitude_user FROM table';
$result=mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());

$i=0;
while($coords = mysql_fetch_array($result, MYSQL_NUM) ) {
$lng[$i] = $coords[0];
$lat[$i] = $coords[1];
echo "latitude_user:".$lat[$i]." longitude_user :".$lng[$i]."<br/>";
$i++;

}

?>

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">

var map;
function initialize() {
var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
var myOptions = {
zoom: 4,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}

map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

var longitude=<?php echo $lng[0]; ?>;
var latitude= <?php echo $lat[0]; ?>;
var compteur= <?php echo $i; ?>;
alert(compteur);

for (var j = 0; j < compteur; j++) {

//alert(longitude);
//alert(latitude);

var location = new google.maps.LatLng(longitude,latitude);
var marker = new google.maps.Marker({
position: location,
map: map
});

}
}

le problème est pour avoir accès à lng[$i] dans la variable location à chaque tour de boucle.
j'avoue que là je suis perdu, si tu vois comment faire.
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Comment veux-tu que je t'aide avec un code pareil ?
Si tu n'utilises pas la balise "code" de CCM, l'indentation est perdue !

L'ajout des marqueurs doit se faire à la place de ta boucle for.
Il suffit de placer le script que je t'ai donné à la place de celle-ci.
0
eric204044 Messages postés 35 Statut Membre
 
Salut,
Je te remercie tout d'abord pour toutes les fois où tu m'as répondu,et je suis désolé pour le code,je pensais qu'il était lisible.
J'ai réussi à trouver mon erreur,mais maintenant j'ai un autre problème, je dois mettre tout ça dans une fonction, c'est à dire déclarer une variable de la forme :
$variable=""; puis $variable=''; avec à l'intérieur tout mon code,puis en retour de la fonction avoir uniquement return $variable.
Mais je ne sais pas pourquoi je n'y arrive pas.
je te copie mon code, j'espère que c'est lisible maintenant.

<?php
$serveur = mysql_connect("localhost","root","");
if (!$serveur)
{
die('Non connecté'. mysql_error());
}

$bd = mysql_select_db('mabase', $serveur);
if (!$bd)
{
die ('Impossible d\'utiliser la base :'. mysql_error());
}

$sql = 'SELECT id_obs,longitude,latitudeFROM table';
$result=mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());

?>


<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">


var map;
function initialize() {
  var myLatlng = new google.maps.LatLng(48,2);
  var myOptions = {
    zoom: 4,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }

  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);





<?php
while ($donnees = mysql_fetch_array($result)){?>
var point = new google.maps.LatLng
('<?php echo $donnees['latitude_user']; ?>','<?php echo $donnees['longitude_user'] ; ?>')



var marker = new google.maps.Marker({
        position: point,
        map: map
    });  //fin marker




google.maps.event.addListener(marker, 'click', function() {
var infowindow = new google.maps.InfoWindow({
  content: '',
  size: new google.maps.Size(50,50),
position:point
});
  //infowindow.open(map, marker);
  infowindow.open(map, this);
 infowindow.setContent( '<?php echo "latitude : ".$donnees['latitude']."<br/> "."longitude :".$donnees['longitude']."" ; ?>');

});

<?php } ?>

} //fin initialize




</script>
</head>
<body onload="initialize()"  >
<center>
<div id="map_canvas" style="width:700px; height:700px"></div>
</center>
</body>
</html>
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Comme ceci ?
<?php
function creerMarqueurs() {
    $sql = 'SELECT * FROM table';
    $req = $pdo->query($sql);

    $source = '';

    while($coords = $req->fetch()) {
        $lng = $coords['lng'];
        $lat = $coords['lat'];

        // Création du point
        echo 'point = new google.maps.LatLng('.$lat.','.$lng.');'."\n";

        // Création du marqueur
        $source .= 'coords = new google.maps.marker({'."\n"
         . 'position: point,'."\n"
         . 'map: map,'."\n"
         . 'title: "Titre du marqueur"'."\n"
        .'});'."\n\n";
    }

    return $source;
}

$marqueurs = creerMarqueurs();
echo $marqueurs;
?>
0
eric204044 Messages postés 35 Statut Membre
 
ben en fait,j'aimerais que tout mon code soit dans une fonction,je vais essayer de m'en inspirer,mais franchement là je désespère car rien de ce que je fais ne provoque l'affichage.
je vais essayer de m'inspirer de ta fonction.
merci,je te tiens au courant :-)
0
eric204044 Messages postés 35 Statut Membre
 
voici mon code, il n'y a pas d'erreur mais rien ne s'affiche,c'est bizarre, non?
alors que en dehors de la fonction cela fonctionne, je suis obligée d'écrire une fonction ou du moins mettre tout dans une variable d'affichage, car je travaille avec typo3 et donc je peux pas mettre du code comme ça directement...
si tu vois mon erreur,ça serait super sympa de m'en faire part

<?php
function affichage() {
$serveur = mysql_connect("localhost","root","");
if (!$serveur)
{
die('Non connecté'. mysql_error());
}

$bd = mysql_select_db('mabase', $serveur);
if (!$bd)
{
die ('Impossible d\'utiliser la base :'. mysql_error());
}

$sql = 'SELECT id_obs,longitude_user,latitude_user FROM table group by id_obs';
$result=mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());


$content = "";

$content='<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
 var map;
function initialize() {
  var myLatlng = new google.maps.LatLng(48,2);
  var myOptions = {
    zoom: 4,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }

  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); ';  
    
  while ($donnees = mysql_fetch_array($result)){
  $long=$donnees['longitude_user'];
  $lat=$donnees['latitude_user'];
  $id_obs=$donnees['id_obs'];
  $content.='var point = new google.maps.LatLng('.$lat.','.$long.');';


  
  $content.='var marker = new google.maps.Marker({
        position: point,
        map: map
    }); 
    google.maps.event.addListener(marker, \'click\', function() {
var infowindow = new google.maps.InfoWindow({
  content: \'\',
  size: new google.maps.Size(50,50),
position:point
});
  //infowindow.open(map, marker);
  infowindow.open(map, this);
 infowindow.setContent( "".'.$id_obs.'.'.$lat.'.'.$long.');

});';
}

$content.='</script>
</head>
<body onload="initialize()"  >
<center>
<div id="map_canvas" style="width:600px; height:700px"></div>
</center>
</body>
</html>';
return $content;

}
  
  
 
echo affichage();  

    
    
        
?>
0