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 :

Raffraichissement carte après chargement de KML à intervalle régulier


Sujet :

APIs Google

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 22
    Points : 27
    Points
    27
    Par défaut Raffraichissement carte après chargement de KML à intervalle régulier
    Bonjour,

    Je rencontre des difficultés lorsque je tente d'afficher un KML sur une carte.

    Toutes les X secondes (ici 5 pour les tests) je lis un fichier KML auto généré par une appli sur un de mes FTP.

    Dans ce KML il n'y a qu'un point à afficher.
    Le champs description du KML contient également les coordonnées GPS.

    Je compare ensuite les coordonnées du point du 1er KML chargé avec le siuvant, et si ces coordonnées changent, alors je dois mettre à jour la map.

    J'avoue que je ne suis pas à l'aise avec les fonctions asynchrones, pouvez m'aiguiller svp afin que le nouveau KML veuille bien s'afficher dans les conditions ci-dessus ?


    Je suis preneur de toute aide, je commence à devenir chauve à force de galérer sur javascript

    Ci-dessous mon code :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    var map;
    var gx = [];
    var kmlLayerOptions = {preserveViewport:true};
    var lastPos = ""; 
     
    function initialisation() {
    	var mapDiv = document.getElementById("map_canvas");
     
    	var latlng =new google.maps.LatLng(45.0000, 5.0000);
    	var myOptions = {
    		zoom: 14,
    		center:  latlng,
    		mapTypeId: google.maps.MapTypeId.ROADMAP
    	}
    	var map = new google.maps.Map(mapDiv, myOptions);
     
    	gx[0]=new google.maps.KmlLayer("http://......generated_file.kml?"+aleat(),kmlLayerOptions);
    	gx[0].setMap(map);
     
    	var timer = setInterval(function(){reloadKml(map)}, 5000);
    }
     
    google.maps.event.addDomListener(window, 'load', initialisation);
     
    function reloadKml(aMap) {
    	//on charge un nouveau KML 
    	gx[1]=new google.maps.KmlLayer("http://......generated_file.kml?"+aleat(),kmlLayerOptions);
     
    	//Attente du chargement complet et lecture de l'attribut "description" du KML dans lequel j'ai également stocké les coordonnées lat / lon en amont
    	google.maps.event.addListenerOnce(gx[1], 'metadata_changed', function(){ 
    		result = gx[1].getMetadata();
    		newPos = result.description;
     
    		if (newPos != lastPos){
    			alert("Position différente");
    			//on enleve l'ancien KML de la map et on affiche le nouveau
    			lastPos = newPos;
     
    			// -- Tentative d'afficher le KML si la position est différente
    			gx[0].setMap(null); 
    			gx[1].setMap(aMap);
    			gx[0] = gx[1];
    			//mais il ne se passe rien ...
     
    		}else{
    			alert("Position identique");
    			//on ne fait rien 
    		}
    	}); 
     
    }
     
    function aleat(){
    	return Math.round(Math.random() * 1000000);
    }

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 22
    Points : 27
    Points
    27
    Par défaut
    je me suis débrouillé autrement, je gère les points directement en javascript avec la méthode new google.maps.Marker, c'est bien plus simple.

    Bonne journée !

Discussions similaires

  1. [Google Maps] Centrer la carte après avoir chargé un kml
    Par -kimi- dans le forum APIs Google
    Réponses: 2
    Dernier message: 14/11/2011, 20h24
  2. action APRES chargement complet ...
    Par PinGuy dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2006, 18h16
  3. [TOMCAT][SERVLETS] Traiments en batch a intervalles régulier
    Par azpublic dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 21/03/2006, 11h06
  4. Réponses: 4
    Dernier message: 25/02/2006, 15h54
  5. Traitement à intervalle régulier
    Par jagboys dans le forum MFC
    Réponses: 2
    Dernier message: 05/07/2005, 00h20

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