IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

AJAX en JQuery et retour javascript pour Google Map


Sujet :

jQuery

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Par d�faut AJAX en JQuery et retour javascript pour Google Map
    Bonjour,

    Je dois mettre en place une fonction AJAX qui affiche des markers Google Map dont les infos et coordonn�es sont pr�sents dans une base de donn�es. Cette fonction prendra 2 param�tres qu'elle passera en GET vers un fichier PHP (data.php) de traitement. Ces param�tres �tant les coordonn�es nord-est et sud-ouest de google map, le data.php va pr�parer une requ�te pour prendre les points situ� entre ses coordonn�es et doit les afficher.

    La requ�te fonctionne, mais le probl�me est que je crois qu'il n'est pas possible de retourner du javascript de cette fa�on, pourtant, j'en ai besoin, car la m�thode pour afficher les markers GM est une fonction javascript...

    La solution, je crois, serait de traiter le r�sultat de ma requ�te de data.php dans ma fonction js qui l'appelle.

    Voil� ma fonction js :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function dragcarte(nordest,sudouest){
    	var nordest;
    	var sudouest;
    	$.ajax({
    		type: "GET",
    		url: "data.php",
    		data: "ne="+nordest+"&so="+sudouest,
    		dataType: "script",
    		success: function(msg){
    			$("#ajax").html( msg );
    		}
    });
    }
    Je pense qu'il faudrait que je modifie au niveau du success et que je mette quelque chose du genre (mais �a ne doit pas fonctionner comme �a) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    success: function(msg){
    	eval( msg );
    }
    Voici en gros mon data.php :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?
    	if($_GET['ne'] != "" && $_GET['so'] != ""){
     
    		//on récupère 2 valeurs, le point sud ouest et le point nord est, il faut spliter les valeurs pour en obtenir 4, chaque latitude et chaque longitude.
     
    		// Requête qui va chercher les évenements éventuels présents entre les coordonnées Nord-Est, Sud-Ouest données par les variables $nordest et $sudouest.
     
    		// Si il y a un résultat, on affiche ce qu'il faut.
    ?>
    		function affiche_points_ajax(){
    <?
    		while($resajax = mysql_fetch_array($sql_markers)){
    ?>
    			var point=new GLatLng(<?=$resajax["Latitude"]?>,<?=$resajax["Longitude"]?>);
    <?
    			if($resajax["Commercial"]){
    ?>
    				markers_c[markers_c.length] = PlacePointAvecInfos(map, point, 5,"icone_commercial.gif","<?=utf8_encode($resajax["CouleurCategorie"])?>","http://www.closevents.com/detail_evenement.php?id_evenement=<?=$resajax["IdEvenement"]?>&id_langue=<?=$resajax["IdLangue"]?>",2,"<? echo addslashes($ls_contenuPetiteBulle) ; ?>", "infoPetiteBulle");
    <?
    			}else{
    ?>
    				markers[markers.length] = PlacePointAvecInfos(map, point, 5,"<?=$resajax["IconeCategorie"]?>","<?=utf8_encode($resajax["CouleurCategorie"])?>","http://www.closevents.com/detail_evenement.php?id_evenement=<?=$resajax["IdEvenement"]?>&id_langue=<?=$resajax["IdLangue"]?>",1,"<? echo addslashes($ls_contenuPetiteBulle) ; ?>", "infoPetiteBulle");
    <?
    			}
    		}
    ?>
    		}affiche_points_ajax();
    		alert("test");
    <?
    	}
    ?>
    J'esp�re qu'il y a toutes les donn�es du probl�me et que vous pourrez m'aider parce que l�, je gal�re, j'ai cherch� un peu partout, et le JS, j'aime pas trop �a .

    Merci.

  2. #2
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Octobre 2006
    Messages
    205
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 205
    Par d�faut Google map
    Je ne suis pas certain de bien comprendre ta demande.

    Tu cherches � repr�senter des �l�ments sur google map. Pour cela il y a l'api fourni par google map. As tu essay� de l'utiliser ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Par d�faut
    En fait, j'ai une base de donn�es qui contient �norm�ment de coordonn�es de marqueurs Google Map et vu qu'il serait bien trop long de les charger tous au d�but (parce qu'il y en a vraiment �norm�ment), l'id�e serait de charger seulement les marqueurs visibles dans le cadre de la map. Et ce via Ajax (pour ne pas recharger la page).

    La fonction se chargerait � chaque drag de la map (donc on r�cup�re � chaque fois les coordonn�es Nord-Est et Sud-Ouest de la map en cours et on affiche les marqueurs pr�sents et seulement ceux-l�).

    Enfin apr�s, �a c'est l'objectif, disons que le probl�me r�side surtout dans le fait de devoir r�cup�rer et ex�cuter une fonction JS ( affiche_point_ajax(); ) pr�sente dans le fichier de traitement php (data.php) appel� par la fonction AJAX ( dragcarte(); ).

    Parce que la fonction se cr�er via la requ�te et le r�sultat est envoy� vers une DIV avec l'ID : #ajax. Sauf que le JS s'affiche dans la DIV mais ne s'ex�cute pas.

    J'esp�re avoir �t� clair =x.

  4. #4
    R�dacteur
    Avatar de marcha
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2003
    Messages
    1 571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 571
    Par d�faut
    Salut,

    Si tu veux renvoyer du code javascript qui sera ex�cut� par
    JQuery sans sp�cifier que tu attends du javascript,
    il faut deux choses

    1) Que le code que tu renvoies soit entour� de balises script, par ex:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    <script type='text/javascript'>
      alert('ça marche');
    </script>
    2) que les donn�es retourn�es soient ins�r�es dans le DOM, car c'est
    � cet instant que JQuery va �valuer le javascript. Pour cela ton

    fait tr�s bien l'affaire.

    Une autre approche est de renvoyer uniquement des donn�es
    pour construire ensuite les marqueurs en javascript, par exemple
    en utilisant JSON

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    [
    { lat: 000, long: 000, text: 'texte du marqueur' },
    { lat: 000, long: 000, text: 'texte du marqueur' },
    ...
    ]
    Dans ce cas l�, tu renvoie un en-t�te json depuis php et tu dis
    � JQuery que tu attends du Json, ta fonction success ressemblera
    � ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    success: function(data){
      for(var i=0;i<data.length;i++) ajoutMarqueur( data.lat, data.long, data.text );
    }
    Un exemple de ce genre de dialogue

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Par d�faut
    Merci Marcha =).

    En gros, la seule chose qui fait que �a ne marche pas, �a serait l'absence des balises script ? Pourtant, je crois que j'avais test� mais que �a n'avait rien donn� =/. Le alert("test"); passait pas... Bah je retenterais �a demain et je tiendrais au courant, j'avais peut-�tre fait une erreur quelque part.

    Sinon, j'avais pens� � mettre l'ID sur une balise script au lieu d'une DIV, mais �a ne semblait pas marcher non plus =/.

    Pour le Json, j'avais vu �a lors de mes recherches mais je n'ai pas tout compris... Cependant, �a a l'air int�ressant. J'ai mit ton lien d'exemple de c�t�, �a peut toujours servir =).

    Sinon, oui, tu dois parler du dataType = script ? Je me demandais s'il fallait que je le mette, est-ce qu'il est utile de le faire ou non ?

    Enfin, pour revenir � l'utilit� global de ce que je dois faire, je me suis demand� si c'�tait vraiment possible de g�rer l'apparition de marqueurs Google Map en AJAX... J'imagine que oui, vu que j'ai vu des exemples pour afficher / cacher des marqueurs d'un certain type. Si quelqu'un pouvait me le confirmer au passage ^^.

    Merci encore et bonne soir�e.

  6. #6
    R�dacteur
    Avatar de marcha
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2003
    Messages
    1 571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 571
    Par d�faut
    Citation Envoy� par Lianodel Voir le message
    Sinon, oui, tu dois parler du dataType = script ? Je me demandais s'il fallait que je le mette, est-ce qu'il est utile de le faire ou non ?
    Sauf erreur c'est utile uniquement si tu souhaite renvoyer uniquement du
    javascript sans faire d'insertion dans le dom.

    Tu peux tr�s bien t'en sortir sans pr�ciser le dataType en renvoyant des
    balises script et en ins�rant le retour dans le DOM (mais si tu ne fais que
    retourner du javascript, je pense que c'est plus propre d'utiliser le dataType
    et de fixer le content-type appropri� cot� php, dans ce cas je suppose (jamais
    test�) que tu ne dois retourner que le code javascript (sans les balises)

    Citation Envoy� par Lianodel Voir le message
    Enfin, pour revenir � l'utilit� global de ce que je dois faire, je me suis demand� si c'�tait vraiment possible de g�rer l'apparition de marqueurs Google Map en AJAX...
    Oui c'est possible et ton approche du probl�me me semble tout � fait bonne.
    Une fois que tu aura une solution fonctionnelle je te sugg�re de tester en
    �largissant la zone dans laquelle tu pr�pare les marqueur en prenant une
    marge autour de la zone visible de la map afin de charger les marqueurs
    avoisinant, cela permettra peut-�tre de donner l'impression d'un meilleur
    temps de r�ponse quand l'utilisateur glisse la map (les marqueurs �tant
    d�j� charg�s)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. De l'ajax dans du javascript (API Google Map)
    Par squal31 dans le forum jQuery
    R�ponses: 1
    Dernier message: 26/08/2014, 22h33
  2. R�ponses: 1
    Dernier message: 11/11/2009, 09h46
  3. Code pour Google Map
    Par BFH dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 18/09/2007, 09h56
  4. Ins�rer une image dans une infobulle pour google maps
    Par durthu dans le forum APIs Google
    R�ponses: 2
    Dernier message: 13/07/2007, 12h31
  5. [Google Maps] JavaScript et Google Maps
    Par flyoman dans le forum APIs Google
    R�ponses: 1
    Dernier message: 10/07/2007, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo