pb API google map et bdd php/sql

pb API google map et bdd php/sql - PHP - Programmation

Marsh Posté le 04-07-2008 à 10:15:45    

Bonjour à tous,
 
Je souhaite intégrer dans mon site un affichage de résultats d'un formulaire dans l'api google map. Voilà mon code :
 

Code :
  1. <?php
  2.          mysql_connect("", "", "" );
  3.           mysql_select_db("" );
  4.  
  5.     //on recupere la latitude longitude nom de la structure     
  6.           $reponse = mysql_query("SELECT Latitude,Longitude FROM T_Gps" )
  7.     ?>
  8. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  9.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  10. <html xmlns="http://www.w3.org/1999/xhtml">
  11.   <head>
  12.     <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  13.     <title>carte d'essai</title>
  14.     <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key="
  15.       type="text/javascript"></script>
  16.     <script type="text/javascript">
  17.     //<![CDATA[
  18.      function load() {
  19.       if (GBrowserIsCompatible()) {
  20.        
  21.           function createMarker(point, number) {
  22.                   var marker = new GMarker(point,icon);
  23.                   GEvent.addListener(marker, "click", function() {
  24.                   marker.openInfoWindowTabsHtml(infoTabs);           
  25.                   });
  26.                    return marker;
  27.             }
  28.             var infoTabs = [
  29.              new GInfoWindowTab("  info1", "  " ),
  30.               new GInfoWindowTab(" info2", "  " )
  31.             ];
  32.      //création d'une carte nommé "map"
  33.             var map = new GMap2(document.getElementById("map" ));
  34.                         GEvent.addListener(map, "moveend", function() {
  35.      
  36.             var center = map.getCenter();
  37.                 });
  38.      
  39.             map.addControl(new GSmallMapControl());
  40.        
  41.             map.addControl(new GMapTypeControl());
  42.      
  43.          
  44.             map.setCenter(new GLatLng(45.44 , 4.395), 8);
  45.                
  46.          
  47.             var icon = new GIcon();
  48.      
  49.             icon.image = "http://images.google.fr/images?q=tbn:gS51abIJ6eysoM:http://rgfrance0.tripod.com/sitebuildercontent/sitebuilderpictures/flag.jpg";
  50.      
  51.             icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
  52.    
  53.             icon.iconSize = new GSize(23, 23);
  54.             icon.shadowSize = new GSize(22, 20);
  55.             icon.iconAnchor = new GPoint(6, 20);
  56.             icon.infoWindowAnchor = new GPoint(5, 1);           
  57.              
  58.            
  59.         <?php while ($donnees = mysql_fetch_array($reponse)){?>
  60.             var point = new GLatLng('<?php echo $donnees['Latitude']; ?>','<?php echo $donnees['Longitude'] ; ?>')
  61.              map.addOverlay(createMarker(point ,1));
  62.              marker.openInfoWindowTabsHtml(infoTabs);
  63.          
  64.       }
  65.     }
  66.  
  67. </script>
  68. <?php
  69. mysql_close()    ;
  70.        }
  71.     ?> 
  72.   </head>
  73.   <body onload="load()" onunload="GUnload()">
  74.     <div id="map" style="width: 500px; height: 500px"></div>
  75.   </body>
  76. </html>


 
Il fonctionne correctement avec un seul enregistrement dans la table mais pas avec plusieurs. Il affiche seulement la première donnée de la table (marqueur sur la carte) et n'arrive pas à créer et afficher d'autres marqueurs (correspondants aux autres données).
 
message d'erreur :
 
"var point = new GLatLng('43.672031','1.448878') map.addOverlay(createMarker(point ,1)); marker.openInfoWindowTabsHtml(infoTabs); } } "
 
Au premier passage de la boucle, les instructions sont exécutées correctement, par contre dès le seconde passage le script JS de la boucle est affiché à l'écran et non interprété/
 
D'où peux venir le soucis ?
 
Merci d'avance pour votre aide.

Reply

Marsh Posté le 04-07-2008 à 10:15:45   

Reply

Marsh Posté le 04-07-2008 à 10:38:49    

juste vite fait je connais pas google map, mais si tu incremente le 1 ?
(point ,1)
en
(point ,<?php echo $i $i++; ?> )

 

met $i = 1; avant ton while


Message édité par ouiouioui10 le 04-07-2008 à 10:39:56
Reply

Marsh Posté le 04-07-2008 à 11:42:51    

merci, mais ça ne change rien.
 
La boucle ne s'exécute toujours qu'une seule fois, je ne comprend pas pourquoi  :(

Reply

Marsh Posté le 04-07-2008 à 11:43:21    

Est-ce que tu es sure que la boucle ramène tout les enregistrements ?

Reply

Marsh Posté le 04-07-2008 à 11:51:43    

Oui, car quand je fais un test d'affichage des latitudes, par exemple :
 
include("connect.php" );  
   
if ($_POST[type] == 'maison')    
   $reponse = mysql_query("SELECT latitude,longitude FROM maison WHERE departement='$departement'" );  
   
if ($_POST[type] == 'appartement')    
   $reponse = mysql_query("SELECT latitude,longitude FROM appartement WHERE departement='$departement'" );  
 
while ($donnees = mysql_fetch_array($reponse))
{
 echo  $donnees['latitude'];
}
 
les latitudes s'affichent toutes bien.

Reply

Marsh Posté le 04-07-2008 à 11:59:45    

Il manque des paramètres dans ton CreateMarker...
Scince les deux également.
 
Regarde dans le code source du site : http://audit.fondev.org (J'ai utilise Google Maps)
 

Code :
  1. var _infoTabs = [
  2. new GInfoWindowTab("Information General", "<table width='400px' border='0' cellspacing='1'><tr><td  class='info_bulle_google_label'>&nbsp;&nbsp;Nom Fonera&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Lattitude&nbsp;&nbsp;</td><td  class='info_bulle_google_label'&nbsp;&nbsp;>Longitude&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Poles&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Meridien&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Altitude&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Satellite&nbsp;&nbsp;</td></tr><tr><td class='info_bulle_google_info'>FON_GRATUIT_HUIT_ET_DEMI</td><td class='info_bulle_google_info'>44.910349</td><td class='info_bulle_google_info'>-0.633207</td><td class='info_bulle_google_info'>N</td><td class='info_bulle_google_info'>W</td><td class='info_bulle_google_info'>16.80</td><td class='info_bulle_google_info'>7</td></tr></table>" ),
  3. new GInfoWindowTab("HTTP", "<table width='400px' border='0' cellspacing='1'><tr><td  class='info_bulle_google_label'>&nbsp;&nbsp;Date D&eacute;but&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Date fin&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Minimum&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Maximum&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Moyenne&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;URL&nbsp;&nbsp;</td></tr><tr><td class='info_bulle_google_info'>&nbsp;&nbsp;2008-04-15 18:32:05&nbsp;&nbsp;</td><td class='info_bulle_google_info'>&nbsp;&nbsp;2008-04-15 18:32:30&nbsp;&nbsp;</td><td class='info_bulle_google_info'>&nbsp;&nbsp;22.43&nbsp;&nbsp;</td><td class='info_bulle_google_info'>&nbsp;&nbsp;92.86&nbsp;&nbsp;</td><td class='info_bulle_google_info'>&nbsp;&nbsp;50.95&nbsp;&nbsp;</td><td class='info_bulle_google_info'>&nbsp;&nbsp;http://www.rarlab.com/rar/wrar371fr.exe&nbsp;&nbsp;</td></tr></table>" ),
  4. new GInfoWindowTab("FTP", "<table width='400px' border='0' cellspacing='1'><tr><td  class='info_bulle_google_label'>&nbsp;&nbsp;Date D&eacute;but&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Date fin&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Minimum&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Maximum&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Moyenne&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;URL&nbsp;&nbsp;</td></tr><tr><td class='info_bulle_google_info'>&nbsp;&nbsp;2008-04-15 18:32:31&nbsp;&nbsp;</td><td class='info_bulle_google_info'>&nbsp;&nbsp;2008-04-15 18:36:36&nbsp;&nbsp;</td><td class='info_bulle_google_info'>&nbsp;&nbsp;NC&nbsp;&nbsp;</td><td class='info_bulle_google_info'>&nbsp;&nbsp;NC&nbsp;&nbsp;</td><td class='info_bulle_google_info'>&nbsp;&nbsp;1.50&nbsp;&nbsp;</td><td class='info_bulle_google_info'>&nbsp;&nbsp;ftp.demo1g.ovh.org&nbsp;&nbsp;</td></tr></table>" )
  5. ];
  6. var _marker = new createMarker(_point,_icon,_infoTabs);
  7. _map.addOverlay(_marker);

Reply

Marsh Posté le 04-07-2008 à 12:08:35    

Pourtant lors du premier passage tout s'affiche correctement sur la map, les points, les info-bulles etc...
 
ça vient d'un problème sur le While mais je ne vois pas ou ?

Reply

Marsh Posté le 04-07-2008 à 12:13:21    

Non, ca vient du code Google Maps, un objet est crée pour chaque point...Dans ton code ce n'est pas le cas !!!  
Ca explique pourquoi il ne te crée pas les autres points....
 

Code :
  1. map.addOverlay(createMarker(point ,1));
  2. marker.openInfoWindowTabsHtml(infoTabs);


Message édité par cvb le 04-07-2008 à 12:14:03
Reply

Marsh Posté le 04-07-2008 à 12:17:37    

D'accord, et donc comment faut-il que je fasse, par rapport à mon code, pour que plusieurs points soient créés ?

Reply

Marsh Posté le 04-07-2008 à 12:25:25    

Est-ce que tu as regarde ce que je t'ai mis plus haut ?  
Scinde les fonctions en deux, et inspire toi de mon code...
 
==> Ton code :

Code :
  1. (...)
  2. map.addOverlay(createMarker(point ,1));
  3. marker.openInfoWindowTabsHtml(infoTabs);
  4. (...)


 
 
 
==> Mon code :
 

Code :
  1. (...)
  2. var _infoTabs = [
  3. new GInfoWindowTab("Information General", "<table width='400px' border='0' cellspacing='1'><tr><td  class='info_bulle_google_label'>&nbsp;&nbsp;Nom Fonera&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Lattitude&nbsp;&nbsp;</td><td  class='info_bulle_google_label'&nbsp;&nbsp;>Longitude&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Poles&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Meridien&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Altitude&nbsp;&nbsp;</td><td  class='info_bulle_google_label'>&nbsp;&nbsp;Satellite&nbsp;&nbsp;</td></tr><tr><td class='info_bulle_google_info'>FON_GRATUIT_HUIT_ET_DEMI</td><td class='info_bulle_google_info'>44.910349</td><td class='info_bulle_google_info'>-0.633207</td><td class='info_bulle_google_info'>N</td><td class='info_bulle_google_info'>W</td><td class='info_bulle_google_info'>16.80</td><td class='info_bulle_google_info'>7</td></tr></table>" )
  4. var _marker = new createMarker(_point,_icon,_infoTabs);
  5. _map.addOverlay(_marker);
  6. (...)


Message édité par cvb le 04-07-2008 à 12:26:02
Reply

Marsh Posté le 04-07-2008 à 12:25:25   

Reply

Marsh Posté le 04-07-2008 à 12:43:49    

Nikel, t'es un chef, ça marche !!
 
Par contre, tant que tu es la, j'en profite :
 
tout marche nikel sous FF, par contre sous IE, la map s'affiche mais pas les markers.
Saurais tu pourquoi ?

Reply

Marsh Posté le 04-07-2008 à 14:01:31    

De rien avec plaisir.
 
Je trouve ça curieux que ça fonctionne sous FF et pas sous IE, c'est l'inverse qui se produit en général ? T'es sûre à 100% ?  
 
J'ai eue des soucis comme ça aussi mais c'était due à des erreurs de code, oublie de ID. Contrairement à toi ça fonctionné sous IE mais pas FF.
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed