2009-05-07 11 views
0

Lorsqu'un marqueur est placé, je souhaite appeler une fonction php (dans un autre fichier) avec la latitude et la longitude en entrée et afficher le résultat dans un div sur la page. Donc, à chaque fois que le marqueur est déplacé, il met à jour le div avec le dernier résultat de la fonction.trigger php demande de fonction lorsque le marqueur google maps est déplacé

Je sais que j'aurais besoin de javascript pour le faire mais je ne suis pas très familier avec cela et toute aide serait appréciée.

Répondre

3

Voici un exemple utilisant jQuery pour déclencher un HTTP GET lorsqu'un marqueur est ajouté à la carte et chaque fois qu'il est déplacé. Le résultat de la requête est placé dans une div avec l'identifiant "outputdiv".

// create and init map (make sure to have a div element with id "map") 
var map = new GMap2(document.getElementById("map")); 
map.setCenter(new GLatLng(37.4419, -122.1419), 13); 

// this is the marker you want to track 
var marker = new GMarker(new GLatLng(37.4419, -122.1419)); 
map.addOverlay(marker); 

// create function to be executed on add/end of drag 
var changeCallback = function(latlng) { 
    // do HTTP GET to execute PHP function in file, with coordinate 
    // as parameter and put result in div with id "outputdiv" 
    $("#outputdiv").load("test.php?latlng=" + latlng.toUrlValue()); 
}; 

// add listener triggered whenever drag of marker has ended 
GEvent.addListener(marker, "dragend", changeCallback); 

// explicitly call when added 
changeCallback(marker.getLatLng()); 

Mise à jour pour répondre à un commentaire: Le paramètre latlng de la fonction de rappel est un objet GLatLng où vous pouvez utiliser pour récupérer les valeurs individuelles de latitude() et lng(). Voir Google Maps API reference pour plus de détails.

+0

Merci pour cela. Je vais certainement essayer dès que je serai de retour à la maison. apprécie vraiment votre aide et vos efforts. –

+0

C'est probablement assez simple à faire, mais comment séparer les coordonnées de latitude et de longitude? par conséquent, je suppose que je devrais changer l'appel à test.php à quelque chose comme: load ("test.php? lat =" + lat.toUrlValue() + "& lng =" + lng.toUrlValue()) cela vous semble-t-il exact? –

0

Vous devez utiliser du code JavaScript et XML asynchrone (appelé AJAX). Beau tutoriel sur le sujet peut être trouvé ici: http://www.w3schools.com/Ajax/Default.Asp.

En fait, vous serez probablement capable de faire ce que vous avez décrit après avoir parcouru ces exemples.

  1. Vous devez d'abord créer l'objet XMLHttpRequest JavaScript comme ça: http://www.w3schools.com/Ajax/ajax_browsers.asp
  2. lire ensuite à how to define the onreadystatechange() method - c'est là que vous spécifiez ce qui se passe lorsque le serveur (la fonction que vous voulez appeler) répond.
  3. Ensuite, envoyez la demande à la fonction, que vous devriez pouvoir appeler en interrogeant un fichier php avec une requête GET ou POST comme cela: xmlhttp.open("GET","myfunction.php",true); xmlhttp.send(null);

Pour le reste, suivez le tutoriel et ça devrait aller. Vous avez vraiment besoin d'un tutoriel à suivre - javascript est assez facile à copier/coller et éditer: D

Questions connexes