Google map avec des markeurs

Résolu
Bonjour,
bonjour,
j'ai essayé de créer une carte google map avec des markeurs en javascript
à chaque fois qu'on crée des markeurs sur la carte je clicke sur le bouton enregistrer pour les enregistrer dans la base de donné.jai réalisé ce code
il m'affiche une page blanche,je suis vraiment débloqué ,quelle est ma faute
voici mon code:

<script src="http://maps.google.com/..." type="text/javascript"></script>
<title>GoogleMap</title>
<script>
function createMarker(point,message) {
var icon = new GIcon(G_DEFAULT_ICON);
icon.image = "http://www.numabilis.com/files/demos/google-maps/blue-dot.png";

var options = {
icon: icon,
draggable: true
};
var marker = new GMarker(point, options);
GEvent.addListener(marker, "dragstart", function() {
map.openInfoWindowHtml(message);
});

GEvent.addListener(marker, "dragend", function() {
marker.closeInfoWindowHtml(message);
});

GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(message);
});

return marker;
}
function load() {
if (GBrowserIsCompatible()) {
var Lat=50.009481 // rentrez ici votre longitude
var Lng=0.00287 // rentrez ici votre lattitude
var Zoom=16 // rentrez ici le zoom désiré entre 1 et 16
var message="Mes souvenirs sont ici"; // rentrez ici votre texte qui sera affiche sur le point marqueur

var map = new GMap2(document.getElementById("map")); // affiche le module
map.setCenter(new GLatLng(Lat,Lng ),Zoom ); //affiche la carte au lieu précisé
map.addControl(new GSmallMapControl()); // affiche le curseur de zoom
map.addControl(new GMapTypeControl()); // affiche le curseur de déplacement

var point = new GLatLng(Lat,Lng);
if(point)
{ pt = new Gpoint(point.x,point.y);
mark = new GMarker(pt);
map.addOverlay(mark);
map.getCenter(point);
var lat=point.y;
var marker = createMarker(point,message);
map.addOverlay(marker); // ces 3 lignes définissent le point et sa légende
}
}
function save()
var latlng= marker.getLatLng();
var lat=latlng.lat();
var lng=latlng.lng();
var url="sql.php";
GDownloadUrl(url,function(date,responseCode){
if(responseCode==200 && data.length<=1)
{ marker.closeInfoWindow();
document.getElementById("message").innerHTML = "Location added.";
}
});
</script>
</head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width:600px;height:400px"></div>
<input type="button" value="enregistrer" onClick="javascript:save();">
</body>

merci pour votre aide
Configuration: Windows XP Internet Explorer 7.0

16 réponses

  1. Salut,
    Ton code est mal indenté (manque des parentheses)
    Gpoint n'existe pas.
    Pour la function save il manque des lignes

    voici ton code modifé

    <script type="text/javascript">

    function createMarker(point,message) {
    var icon = new GIcon(G_DEFAULT_ICON);
    icon.image = "http://www.numabilis.com/files/demos/google-maps/blue-dot.png";
    var options = {
    icon: icon,
    draggable: true
    };
    var marker = new GMarker(point, options);
    GEvent.addListener(marker, "dragstart", function() { map.openInfoWindowHtml(message); });
    GEvent.addListener(marker, "dragend", function() {marker.closeInfoWindowHtml(message);});
    GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(message);});
    return marker;
    }

    function load() {
    if (GBrowserIsCompatible()) {
    var Lat= 48.8530240 // rentrez ici votre longitude
    var Lng= 2.3497110 // rentrez ici votre lattitude
    var Zoom=16 // rentrez ici le zoom désiré entre 1 et 16
    var message="Mes souvenirs sont ici"; // rentrez ici votre texte qui sera affiche sur le point marqueur

    var map = new GMap2(document.getElementById("map")); // affiche le module
    map.setCenter(new GLatLng(Lat,Lng ),Zoom ); //affiche la carte au lieu précisé
    map.addControl(new GSmallMapControl()); // affiche le curseur de zoom
    map.addControl(new GMapTypeControl()); // affiche le curseur de déplacement

    var point = new GLatLng(Lat,Lng);
    if(point){
    mark = new GMarker(point.x,point.y);
    map.addOverlay(mark);
    map.getCenter(point);
    var lat=point.y;
    var marker = createMarker(point,message);
    map.addOverlay(marker); // ces 3 lignes définissent le point et sa légende
    }
    }
    }

    function save(){
    var latlng= marker.getLatLng();
    var lat=latlng.lat();
    var lng=latlng.lng();
    var url="sql.php";
    GDownloadUrl(url,function(date,responseCode){
    if(responseCode==200 && data.length<=1){
    marker.closeInfoWindow();
    document.getElementById("message").innerHTML = "Location added.";
    }
    });
    }

    </script>
    </head>

    <body onload="load()" onunload="GUnload()">
    <div id="map" style="width:600px;height:400px"></div>
    <input type="button" value="enregistrer" onClick="javascript:save();">
    </body>

    Bon courage
    5
    1. Bonjour,

      En fait c'est possible de créer un marker en cliquant sur la carte... Le problème c'est que je ne sais pas comment ça marche ! mais j'ai utilisé le module GMAP avec le CMS Drupal, et dans la configuration du module il était possible de le mettre en place. Il suffisait de cliquer sur la carte, et GoogleMap sortait la latitude et longitude du clic. Je l'ai utilisé et ça permettait aux utlisateurs de se positionner sur tout le monde entier, et donc ensuite de générer une carte avec tous les utilisateurs dessus.

      Désolé de ne pas vous apporter plus, mais sachez juste que c'est possible...

      Simon.
      0
      1. a ma connaissance tu peux pas cliquer directement sur la carte pour créer un marker en dynamique.
        0
        1. j'ai pas des valeurs précis je les récupère par hasard
          je veux lorsque je clique sur un emplacement je crée le markeur et avec le bouton enregistrer je sauvegarde le markeur
          0
          1. Je comprend rien...

            Dans ton code tu créer un marker avec :

            var Lat = 50.009481 // rentrez ici votre longitude
            var Lng = 0.00287 // rentrez ici votre lattitude

            Tu les récupère ou ces valeurs lat et lng ?????
            0
            1. oui c'est moi qui crée les markeurs dans différentes emplacement
              je veux sauvegarder ces markeurs dans une base de donné
              j'ai développé cette fonction mais elle ça marche pas
              0
              1. Déjà il faut récupérer la position du Marker

                var posMarker = marker.getPoint(); // récupère la position duMarker dans la variable posMarker
                et l'envoyer en ajax vers ton serveur

                Qui créer les Marker sur la carte ?

                Si c'est toi tu connais forcément la position Lat Long du point (marker)
                ou alors tu veux récupérer la position par exemple de la "tour eiffel" et la sauver dans une base ?

                J'ai pas compris la finalité ton code.
                0
                1. j'ai pas compris est ce que je remplace cette ligne
                  var url="sql.php?lat=" + lat + "&lng=" + lng;
                  GDownloadUrl(url,function(data,responseCode)
                  par <form id="save" method="post" action="$_SERVER['SELF_PHP']" >
                  <input type="submit" value="enregistrer">
                  </form>
                  est que vous pouvez m'expliquer
                  merci
                  0
                  1. GDownloadUrl permet d'envoyer des data vers la carte pas de les récupérer.

                    Si tu veux envoyer une requête vers le serveur tu dois utiliser ajax

                    Si tu connais pas ajax utilise un formulaire en php :

                    <form id="save" method="post" action="$_SERVER['SELF_PHP']" >
                    <input type="submit" value="enregistrer">
                    </form>
                    1
                    1. voici la fonction save:
                      function save()
                      {
                      var latlng= marker.getLatLng();
                      var lat=latlng.lat();
                      var lng=latlng.lng();
                      var url="sql.php?lat="+ lat + "&lng=" + lng;
                      GDownloadUrl(url,function(data,responseCode){
                      if(responseCode==200 && data.length<=1)
                      { marker.closeInfoWindow();
                      document.getElementById("message").innerHTML = "Location added.";
                      }
                      });
                      }
                      le code de fichier sql.php:

                      <?php
                      require("connexion.php");
                      //prend les données de paramétres de l'URL

                      $lat = $_GET['lat'];
                      $lng = $_GET['lng'];

                      // ouvrir une connexion au serveur mysql
                      $connection=mysql_connect ("localhost", $username, $password);
                      if (!$connection) {
                      die('Not connected : ' . mysql_error());
                      }

                      // recupére la base de donné mysql
                      $db_selected = mysql_select_db($database, $connection);
                      if (!$db_selected) {
                      die ('Can\'t use db : ' . mysql_error());
                      }

                      //insérer une nouvelle colonne avec les données de l'utilisateur
                      $query = sprintf("INSERT INTO markers " .
                      " (lat, lng ) " .
                      " VALUES ('%s', '%s');",

                      mysql_real_escape_string($lat),
                      mysql_real_escape_string($lng));

                      $result = mysql_query($query);

                      if (!$result) {
                      die('Invalid query: ' . mysql_error());
                      }

                      ?>
                      0
                      1. En effet.

                        Supprime les lignes suivantes :

                        mark = new GMarker(point.x,point.y);
                        map.addOverlay(mark);
                        map.getCenter(point);
                        var lat=point.y;

                        Pour Enregistrer la function save est incomplète envoi le reste du code
                        0
                        1. j'ai copié ce code mais lorsque je clique sur le bouton enregistrer il ne fonctionne pas il ya deux markeurs
                          0
                          1. Copie le code plus haut sans rien changer il fnct parfaitement
                            0
                            1. bonjour,
                              j'ai enlever cette ligne pt = new Gpoint(point.x,point.y);
                              et j'ai laissé juste cela mark = new GMarker(point.x,point.y);
                              il ya toujours les mémes fautes.
                              est ce que vous pouvez m'aider
                              merci
                              0
                              1. Bjr,

                                Gpoint = point très certainement

                                Dans ton code tu affiche 2 fois le meme Marker
                                1ere fois
                                Marker -> var point = new GLatLng(Lat,Lng);
                                pt = new Gpoint(point.x,point.y);
                                mark = new GMarker(pt);
                                map.addOverlay(mark); //affiche un marker en 0,0 normal Gpoint n'existe pas
                                map.getCenter(point);

                                2eme fois
                                var marker = createMarker(point,message); //affiche un marker a la bonne position
                                map.addOverlay(marker);
                                }
                                0
                                1. bonjour,
                                  merci pour votre réponse,je ne comprends pas pourquoi Gpoint non
                                  merci de m'expliquer
                                  0