Astuce API Google Map : enlever le onload du body

Sur l’API de Google map, le code proposé ressemble à cela :

 function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        map.setUIToDefault();
      }
    }

Si vous avez de l’AJAX dans vos pages ou que que voulez utiliser le onload du body pour autre chose, cela risque de coincer.

Voici donc l’astuce :

function pageFermeture() {
	GUnload();
}
    if (window.onload)
    {
            //Hang on to any existing onload function.
            gmapExistingOnload = window.onload;
    }

    window.onload=function(ev){
        //Run any onload that we found.
        if (gmapExistingOnload)
        {
                gmapExistingOnload(ev);
        }
        if (GBrowserIsCompatible()) {

          // custom init (must be specified in the page calling this view)
          //gMapsInit();
		  initialisation_gmap();
        }
    };

Mise à jour du 10 mars 2010, voici une autre façon de faire :
function addLoadEvent(func) { 
	var oldonload = window.onload; 
	if (typeof window.onload != 'function'){ 
		window.onload = func 
	} else { 
		window.onload = function() { 
			oldonload(); 
			func(); 
		} 
	} 
} 
addLoadEvent(initialize);

Amusez-vous bien 🙂

8 réponses
  1. Florent Maillefaud
    florent dit :

    MacFly :

    @florent
    Je rencontre quelques soucis..
    Je souhaite afficher une carte et un parcours et les actualiser toute les x secondes grâce à ajax prototype.
    L’actualisation se passe bien mais la map ne s’affiche plus du tout ..

    Je n’ai bien juste qu’à ajouter addLoadEvent(function) pour chaque fonction voulue dans window.unload ?

    as-tu la page en ligne quelque part ? Sinon tu peux me l’envoyer pour que je regarde ton code source ?

    Répondre
  2. MacFly
    MacFly dit :

    @florent
    Je rencontre quelques soucis..
    Je souhaite afficher une carte et un parcours et les actualiser toute les x secondes grâce à ajax prototype.
    L’actualisation se passe bien mais la map ne s’affiche plus du tout ..

    Je n’ai bien juste qu’à ajouter addLoadEvent(function) pour chaque fonction voulue dans window.unload ?

    Répondre

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *