GMaps API et l'objet GMap2

GMaps API et l'objet GMap2 - HTML/CSS - Programmation

Marsh Posté le 11-08-2009 à 11:22:14    

Bonjour,
 
Je suis dans un projet dans lequel je vais etre amener a  beaucoup utilisé la GoogleMaps API, et je me pose des question d'"architecture".
 
Au chargement de ma page, je crée un nouvel objet GMap2 dans une fonction load()
 

Code :
  1. var map = new GMap2(document.getElementById("map" ));


 
Mais je vais avoir d'autre fonctions pour "remplir" la carte, telles que loadMarkers(arguments) ou cleanMap(arguments)..  
Je ne suis pas tres habitué a faire du javascript, et je suis un peu perdu, comment faire pour pouvoir utiliser mon objet GMap2 (var map) dans mes autres fonctions ?
 
Car pour l'instant je suis dans le cas present :  
 

Code :
  1. function load() {
  2. if (GBrowserIsCompatible()) {
  3.  var map = new GMap2(document.getElementById("map" ));
  4.  map.setCenter(new GLatLng(10, 10), 15);
  5.  map.addControl(new GSmallMapControl());
  6.  map.addControl(new GMapTypeControl());
  7. }
  8. }


 
Et si je passe vers quelque chose comme
 

Code :
  1. var map = new GMap2(document.getElementById("map" ));
  2. function load() {
  3. if (GBrowserIsCompatible()) {
  4.  map.setCenter(new GLatLng(10, 10), 15);
  5.  map.addControl(new GSmallMapControl());
  6.  map.addControl(new GMapTypeControl());
  7. }
  8. }
  9. function blabla() { .... }
  10. ...


 
La map ne s'affiche plus, j'ai un map is undefined comme erreur javascript.
 
Comment faire pour pouvoir réutiliser cet objet Gmap2 dans mes autres fonctions, voir dans d'autre fichier ? Ou alors le "récuperer" dans le DOM ?
 
Je suis un peu perdu,
Merci de votre aide.
 

Reply

Marsh Posté le 11-08-2009 à 11:22:14   

Reply

Marsh Posté le 11-08-2009 à 11:24:43    

il faut bien définir le var map avant le load, mais ne l'initialiser que dedans:

Code :
  1. var map;
  2. function load() {
  3. if (GBrowserIsCompatible()) {
  4.   map = new GMap2(document.getElementById("map" ));
  5.   map.setCenter(new GLatLng(10, 10), 15);
  6.   map.addControl(new GSmallMapControl());
  7.   map.addControl(new GMapTypeControl());
  8. }
  9. }
  10. function blabla() { .... }
  11. ...


cf les exemples dans la doc de l'api...


Message édité par pataluc le 11-08-2009 à 11:25:01
Reply

Marsh Posté le 11-08-2009 à 12:07:34    

Quand appelles tu ta fonction load() ?
Parce que dans le code que tu as mis elle n'est appellee nul part :??:  
 
Tu l'as mis dans un attribut <body onload="load()"> ou qqchose comme ca ?


---------------
Fresh
Reply

Marsh Posté le 11-08-2009 à 13:03:42    

Merci pataluc, et navré de ne pas avoir été suffisamment assidu avec la doc de l'api ^^.
 
Oui budlite, j'ai le body onload.
 
Je profite que je vous tiens pour une autre question :
 
En gros je vais faire des appels AJAX pour "remplir" la carte avec des Gmarkers, en fonctions d'arguments passé par l'utilisateur.
Quel moyen préconisez vous pour passer les arguments a ma requete AJAX ?
 
Inspecter le DOM pour avoir les arguments (si l'utilisateur choisit dans une combo box par exemple), ou plutot via les sessions ?
Je souhaite que ce sois le plus "secure" possible, meme si il y aura bien sur des verifications dans mon code PHP, que l'utilisateur ne puisse pas facilement envoyer des arguments "bidon" a ma requete.
 
Merci encore

Reply

Marsh Posté le 12-08-2009 à 06:55:31    

Qu'entends tu par "utiliser les sessions" pour faire une requete au serveur ? :??:


---------------
Fresh
Reply

Marsh Posté le 12-08-2009 à 13:53:48    

Plutot pour les parametres, apres reflexion il est vrai que les sessions ne vont pas vu que je fait de l'AJAX, je ne peux pas charger un argument dans une variable de SESSION vu que je ne recharge pas la page.
 
Mais disons que l'utilisateur veux visualiser des markers pour tel evenement X (disons que l'evenement a une ID), quel est le meilleur moyen pour passer cet argument a ma fonction loadMarkers() quand l'utilisateur click sur "Evenement X" ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed