|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Date d'inscription: octobre 2008
Localisation: vers Grenoble
Messages: 114
|
Bonjour,
j'ai une page web qui est construite dynamiquement en PHP. J'insers dans cette page web une map google en utilisant le code javascript ci-dessous : Code :
<script src="http://maps.google.com/maps?file=api&v=2&key=mykey&sensor=false" type="text/javascript"></script> <script type="text/javascript"> var MaCarte; var geocoder = null; var LatitudeCarteClick; var LongitudeCarteClick; function load() { if (GBrowserIsCompatible()) { MaCarte = new GMap2(document.getElementById('map')); MaCarte.setCenter(new GLatLng(47, 3), 5); MaCarte.addControl(new GLargeMapControl()); MaCarte.addControl(new GMapTypeControl()); MaCarte.addControl(new GOverviewMapControl()); MaCarte.addControl(new GScaleControl()); geocoder = new GClientGeocoder(); }else{ alert("Désolé, mais votre navigateur n\'est pas compatible avec Google Maps"); } } function dec2dms(l) { d = Math.floor(l); p = (l - d) * 60; m = Math.floor(p); s = Math.round((p - m) * 60); return d+"° "+m+"'' "+s+"'"; } function recentrerCarte(){ window.setTimeout(function(){MaCarte.panTo(new GLatLng(LatitudeCarteClick, LongitudeCarteClick));}, 1000); } function AfficherAdresse(addresse) { if (geocoder) { geocoder.getLatLng(addresse, function(point) { if (!point) { alert('Impossible de geolocaliser cette adresse' + addresse); MaCarte.setCenter(new GLatLng(47, 3), 5); } else { MaCarte.clearOverlays(); var marker = new GMarker(point, {draggable: true}); GEvent.addListener(marker, 'dragstart', function() { MaCarte.closeInfoWindow(); }); GEvent.addListener(marker, 'dragend', function(point) { recentrerCarte(); }); MaCarte.addOverlay(marker); MaCarte.setCenter(point, 15); } } ); } } function AddMarker(lat,lon) { var point = new GPoint(lat, lon); var newMarker = new GMarker(point); MaCarte.addOverlay(newMarker); } </script> Lorsqu'un utilisateur s'identifie sur mon site, je veux afficher des infos le concernant sur la carte construite au départ. J'insère donc l'appel à la fonction AddMarker (latitude, longitude); dans ma page construite : Code :
<?php print('<script type="text/javascript">'); print('AddMarker('.$lat.','.$long.');'); print('</script>'); ?> Comment puis-je accéder à la variable MaCarte définie et initialisée lors de la première exécution du javascript ? Je précise que je débute totalement en javascript. Merci pour votre aide. Floopi51 |
|
|
|
|
#2 |
![]() Date d'inscription: octobre 2007
Localisation: Paris
Messages: 491
|
Ton problème, c'est que MaCarte ne sera initialisée que quand la fonction load aura été appelée. (Certainement sur le onload de ton body, non ?
Change un peut ton code : Code :
<?php print('<script type="text/javascript">'); print('function myLoad() {'); print('load();'); print('AddMarker('.$lat.','.$long.');'); print('}'); print('</script>'); ?> Code :
<body onload="myLoad()">
__________________
on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition" |
|
|
|
|
|
#3 | |
|
Membre régulier
![]() Date d'inscription: octobre 2008
Localisation: vers Grenoble
Messages: 114
|
Citation:
Le truc c'est que je ne veux pas que la fonction AddMarker(x,y); soit appelée au premier chargement mais seulement si un user est identifié. Donc je ne peux pas l'appeler avec le load(); dans le onload du body. C'est pour ça que je voudrai être sûre que javascript me permet de conserver la variable MaCarte tant que ma page est affichée. |
|
|
|
|
|
#4 | ||
![]() Date d'inscription: octobre 2007
Localisation: Paris
Messages: 491
|
Citation:
Citation:
__________________
on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition" |
||
|
|
|
|
|
#5 | |
|
Membre régulier
![]() Date d'inscription: octobre 2008
Localisation: vers Grenoble
Messages: 114
|
Citation:
Il peut ensuite afficher les infos le concernant en cliquant sur un lien défini comme ci-dessous en PHP : Code :
<?php print('Retrouvez vos infos<a href="index.php?section=mesinfos&page=mesinofs" title="mes Infos">ici</a>.'); ?> On récupère dans une base de données les infos à afficher pour le user et on appel la fonction AddMarker(); pour ajouter les marker sur MaCarte. Je veux être sûre que la variable MaCarte n'est pas détruite entre l'appel à load dans le onload du body et l'appel à ma fonction AddMarker(); |
|
|
|
|
|
#6 |
![]() Date d'inscription: octobre 2007
Localisation: Paris
Messages: 491
|
Le problème, c'est que tu ne peux pas faire un appel à AddMarker avant que MaCarte soit initialisée, donc avant que load ne soit appelée. Comme load est appelée sur l'événement onload, tu n'as pas beaucoup de choix...
Soit tu passes par une action utilisateur pour faire ton AddMarker, Soit tu fais comme j'ai dit dans ma première réponse ou dans le même genre: Code :
<?php print('<script type="text/javascript">'); print('function myLoad() {'); print('load();'); if(userConnected()) { print('AddMarker('.$lat.','.$long.');'); } print('}'); print('</script>'); ?> Code :
<body onload="load();if(runAddMarker){runAddMarker()}"> <?php print('<script type="text/javascript">'); print('function runAddMarker() {'); print('AddMarker('.$lat.','.$long.');'); print('}'); print('</script>'); ?>
__________________
on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition" |
|
|
|
|
|
#7 |
|
Membre régulier
![]() Date d'inscription: octobre 2008
Localisation: vers Grenoble
Messages: 114
|
je vais essayer de modifier mon code pour faire l'appel à AddMarker sur le onload du body et
le load de la carte avant ça. merci pour tes réponses. Floopi |
|
|
|
|
![]() |
||
portée et existence d'une variable
|
||
| Outils de la discussion | |
|
|