Page 1 sur 1

récupérer latitude et longitude à partir base de donnée?!!

Posté : 19 avr. 2012, 16:03
par mreiwa
Bonjour :)
je veux faire un déplacement d'un marqueur à partir d'un base de donnée et chaque 4 secondes ,ainsi il va afficher les marqueurs dans un boucle
j'ai un exemple et voilà le code mais latitude et longitude sont déclaré manuellement dans la page:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
  <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
    <title>Map test</title> 
    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAv4Q1uOL3I9E3TMXuNfqmXBRRw9x0kUfjFXPT2tErDgxsEiV9kBTnoBxFJsfq0eepyG_GRzWVf7HqTg"
      type="text/javascript"></script> 
    <script type="text/javascript"> 
 
    //<![CDATA[
 
// Bus locations
var data = [
 { lat:-41.218194, lng:174.832478 },
 { lat:-41.217678, lng:174.832596 },
 { lat:-41.217177, lng:174.832939 },
 { lat:-41.216669, lng:174.832209 },
 { lat:-41.215636, lng:174.831887 },
 { lat:-41.214667, lng:174.832124 },
 { lat:-41.214094, lng:174.831930 },
 { lat:-41.214490, lng:174.830793 },
 { lat:-41.215023, lng:174.829999 },
 { lat:-41.215813, lng:174.829978 },
 { lat:-41.216709, lng:174.829956 },
 { lat:-41.217629, lng:174.830589 },
 { lat:-41.218057, lng:174.831372 }
];
 
var map = null;
var route = null;
var busMarker = null;
var point = null;
var count = 0;
var delay = 2000;
var loops = 5;
 
function load() {
  if (GBrowserIsCompatible()) {
  map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(-41.217573, 174.831952), 15);
 
  addBusStops();
 
  var point = new GLatLng(data[count].lat, data[count].lng);
  busMarker = new GMarker(point);
  map.addOverlay(busMarker);
//GLog.write("load " + busMarker.GetLatLng);
 
  route = setTimeout("moveTheBus()", 4000);
  }
 }
 
function addBusStops() {
  var polyline = new GPolyline([
    new GLatLng(-41.217952, 174.831394),
    new GLatLng(-41.217942, 174.831383),
  ], "#ff0000", 5);
  map.addOverlay(polyline);
  var polyline = new GPolyline([
    new GLatLng(-41.218436, 174.832520),
    new GLatLng(-41.218416, 174.832500),
  ], "#ff0000", 5);
  map.addOverlay(polyline);
  var polyline = new GPolyline([
    new GLatLng(-41.215878, 174.830064),
    new GLatLng(-41.215868, 174.830054),
  ], "#ff0000", 5);
  map.addOverlay(polyline);
  var polyline = new GPolyline([
    new GLatLng(-41.214780, 174.830600),
    new GLatLng(-41.214770, 174.830610),
  ], "#ff0000", 5);
  map.addOverlay(polyline);
  var polyline = new GPolyline([
  new GLatLng(-41.215991, 174.832016),
  new GLatLng(-41.215971, 174.832036),
  ], "#ff0000", 5);
  map.addOverlay(polyline);
 }
 
 function moveTheBus() {
  count++;
  if(count > data.length - 1) {
	count = 0;
	loops--;
  }
 
//GLog.write("move the marker to " + data[count].lat + ", " + data[count].lng);
//GLog.write("busMarker before move = " + busMarker.getLatLng());
  point = new GLatLng(data[count].lat, data[count].lng);
  busMarker.setLatLng(point); 
//GLog.write("busMarker after move = " + busMarker.getLatLng());
 
  if (loops > 0)
  {
	route = setTimeout("moveTheBus()", delay);
  }
}	
		
	//]]>
    </script> 
  </head> 
  <body onload="load()" onunload="GUnload()"> 
    <div id="map" style="width: 500px; height: 300px"></div> 
  </body> 
</html>


mais je veux rendre le marqueur s'affichera suivant les latitudes et les longitudes enregistrés dans la base de donnée ,j'essaye d'intégrer un code PHP pour faire la connexion ainsi l'affichage mais le marqueur ne se déplacera pas :s
je sais pas ou l'erreur exactement ?!!!
et voila mon code + PHP :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
  <head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
    <title>Map test</title> 
    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAv4Q1uOL3I9E3TMXuNfqmXBRRw9x0kUfjFXPT2tErDgxsEiV9kBTnoBxFJsfq0eepyG_GRzWVf7HqTg"
      type="text/javascript"></script> 
    <script type="text/javascript"> 
 
    //<![CDATA[
 
 	<?php
//ouverture de la connexion à la base de données
$connexion=mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("markers",$connexion) or die(mysql_error());

//la requête pour obtenir la liste des points
$result = mysql_query("SELECT lattitude,longitude FROM listePoints order by id");

//récupération de tous les points pour les mettre dans une table façon JavaScript
$listeDesPoints='';
while($row = mysql_fetch_array($result)){
  if($listeDesPoints!='') $listeDesPoints.=','; //ajoute la virgule de séparation des points
  $listeDesPoints.='['.$row['lattitude'].','.$row['longitude'].']';
}
//et voilà $listeDesPoints est prêt à être affiché dans le script

//on ferme la connexion à la base de données
mysql_close($connexion);
?>
 
 
 
// Bus locations
var data = [
<?php echo $listeDesPoints; ?>
];
 
var map = null;
var route = null;
var busMarker = null;
var point = null;
var count = 0;
var delay = 2000;
var loops = 5;
 
function load() {
  if (GBrowserIsCompatible()) {
  map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(-41.217573, 174.831952), 15);
 
  addBusStops();
 
  var point = new GLatLng(data[count].lat, data[count].lng);
  busMarker = new GMarker(point);
  map.addOverlay(busMarker);
//GLog.write("load " + busMarker.GetLatLng);
 
 
 
 
 
  route = setTimeout("moveTheBus()", 5000);
  }
 }
 
function addBusStops() {

$listeDesPoints='';
while($row = mysql_fetch_array($result))
{
  if($listeDesPoints!='') $listeDesPoints.=','; 
  $listeDesPoints='['.$row['lattitude'].', '.$row['longitude'].']';
}



 }
 
 function moveTheBus() {
  count++;
  if(count > data.length - 1) {
	count = 0;
	loops--;
  }
 
//GLog.write("move the marker to " + data[count].lat + ", " + data[count].lng);
//GLog.write("busMarker before move = " + busMarker.getLatLng());
  point = new GLatLng(data[count].lat, data[count].lng);
  busMarker.setLatLng(point); 
//GLog.write("busMarker after move = " + busMarker.getLatLng());
 
  if (loops > 0)
  {
	route = setTimeout("moveTheBus()", delay);
  }
}	
		
	//]]>
    </script> 
  </head> 
  <body onload="load()" onunload="GUnload()"> 
    <div id="map" style="width: 800px; height: 800px"></div> 
  </body> 
</html>


et voilà mon base de donnée:
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Jeu 19 Avril 2012 à 11:57
-- Version du serveur: 5.5.8
-- Version de PHP: 5.3.5

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: `markers`
--

-- --------------------------------------------------------

--
-- Structure de la table `listepoints`
--

CREATE TABLE IF NOT EXISTS `listepoints` (
  `id` int(111) NOT NULL,
  `lattitude` varchar(111) NOT NULL,
  `longitude` varchar(111) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Contenu de la table `listepoints`
--

INSERT INTO `listepoints` (`id`, `lattitude`, `longitude`) VALUES
(2, '-41.217678', '174.832596 '),
(3, '-41.217177', '174.832939'),
(4, '-41.216669', '174.832209'),
(5, '-41.215636', '174.831887'),
(6, '-41.214667', '174.832124'),
(7, '-41.214094', '174.831930'),
(8, '-41.214490', '174.830793'),
(9, '-41.215023', '174.829999');
et merci d'avance

Re: récupérer latitude et longitude à partir base de donnée?

Posté : 20 avr. 2012, 18:24
par pascalou
Ca fait longtemps que je n'ai pas codé et je suis en train de m'y remettre.
Je bosse sur un projet similaire.
Ca ne viendrait pas de tes apostrophes ?
Je crois me souvenir qu'il faut alterner les " et les ' quand il y a risque de confusion dans le code.