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

APIs Google Discussion :

API V3 avec jQuery [Google Maps]


Sujet :

APIs Google

  1. #1
    Membre habitué Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Points : 172
    Points
    172
    Par défaut API V3 avec jQuery
    Salut tout le monde,
    je suis en train de développer une application web qui géolocalise les utilisateurs.
    J'utilise ainsi api javascript google maps v3 avec jquery.
    voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $().ready(function() {
    var latlng = new google.maps.LatLng(49.41483, 2.817895);
    var options = {
    	center: latlng,
    	zoom: 6,
    	mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var carte = new google.maps.Map(document.getElementById("carte"), options);	
    });
    J'ai ensuite un fonction javascript qui serait appelée après un clic sur un bouton.
    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
     
    function afficher(id) {
    				$.ajax({
    					url : "geo.php",
    					dataType : "XML",
    					data : "id="+id,
    					success : function(data) {
    								var i = 0;
    								$(data).find('fire').each(function() {
    									i = i+1;
    									var fire = $(this);
    									var longi = fire.attr("longitude");
    									var lati = fire.attr("latitude");	
    									var ltlg = new google.maps.LatLng(lati, longi);
    									var myMarker = new google.maps.Marker({
    										position: ltlg, 
    										map:  carte,
    										icon: fire.attr("icone"),
    										title: fire.attr("address")
    									});
    								});	
    								if(i==0) alert("aucune geo trouvee");
    								//alert(i);								
    							},
    					error : function() {
    						alert('error');
    					}
    				});	
    			}
    la fonction est bien appelée et me retourne le texte XML voulu mais les marqueurs ne sont pas affichés dans la carte :
    voilà le message:
    Élément référencé par son ID/NAME dans le contexte global. Utilisez la propriété standard du W3C « document.getElementById() » à la place.
    [Stopper sur une erreur] map: carte,

    et quand je remplace carte par document.getElementById("carte") dans la fonction afficher() le texte XML est bien retourné mais les marqueurs ne sont pas affichés et cette fois ci sans message d'erreur.
    qu'est ce que je dois faire pour que les marqueurs soient bien affichés???

    Merci pour votre aide.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu es sûr que ta variable carte est disponible dans la fonction afficher() ?
    A première vue, je dirais que non, ce qui explique le message d'erreur

  3. #3
    Membre habitué Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Points : 172
    Points
    172
    Par défaut
    Justement c'est l'origine du problème, et pour remédier à ça j'ajoute au début de ma fonction afficher les lignes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    				var latlng = new google.maps.LatLng(49.41483, 2.817895);
    				var options = {
    					center: latlng,
    					zoom: 6,
    					mapTypeId: google.maps.MapTypeId.ROADMAP
    				};
    				var carte = new google.maps.Map(document.getElementById("carte"), options);
    mais le problème c'est qu'une autre carte se charge ce qui ne me plait pas je voudrais travailler sur la même carte!!!

  4. #4
    Membre habitué Avatar de omar24
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 159
    Points : 172
    Points
    172
    Par défaut
    ça y'est j'ai trouvé la source du problème, ma variable carte n'était pas déclarée globale, il fallait avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $().ready(function() {
    var latlng = new google.maps.LatLng(49.41483, 2.817895);
    var options = {
    	center: latlng,
    	zoom: 6,
    	mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    carte = new google.maps.Map(document.getElementById("carte"), options);	
    });
    sans précéder la variable carte par le mot clé var pour qu'il soit globale.
    Merci

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 088
    Points : 44 666
    Points
    44 666
    Par défaut
    sans précéder la variable carte par le mot clé var pour qu'il soit globale.
    il est quand même important de déclarer cette variable avec le mot clé var en global, cela peut éviter des surprise.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/12/2015, 09h15
  2. Comment faire une API Win32 avec C++ Builder
    Par Zerocool003 dans le forum C++Builder
    Réponses: 2
    Dernier message: 31/01/2006, 16h13
  3. Réponses: 11
    Dernier message: 06/01/2006, 11h15
  4. BCB6 & Mysql(api) :pb avec requete
    Par o_live dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/03/2005, 15h12
  5. Api mysql avec Devc++, erreur de compilation
    Par Viiince dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 15/06/2004, 17h19

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