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 :

Marqueurs KML en dessous du tracé [Google Maps]


Sujet :

APIs Google

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 92
    Points
    92
    Par défaut Marqueurs KML en dessous du tracé
    Bonjour,

    Dans ma carte google maps, je charge d'abord un KML avec le tracé de mon itinéraire et ensuite je charge les marqueurs avec un autre KML. Le souci est que les marqueurs se retrouvent toujours en dessous du tracé, je ne sais pas comment faire pour forcer les marqueurs à s'afficher au-dessus du tracé.

    Pour comprendre, voici une capture d'écran :



    La fonction suivante me permet de charger mon fichier KML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function loadKMLFile(KMLFilename, map, cache) {		
           if ( cache==1 ) {
            var kmlfile = new google.maps.KmlLayer('http://monsite.com/kml/'+KMLFilename+'?rand='+(new Date()).valueOf() );
           } else {        
            var kmlfile = new google.maps.KmlLayer('http://monsite.com/kml/'+KMLFilename );
           } 
           kmlfile.setMap(map);
           layersdisplayer.push(kmlfile);
        }
    J'appelle deux fois la fonction précédente pour charger les deux KML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    loadKMLFile(circuit_transports+'.kml', map_transports, 1);
              loadKMLFile('Arret_'+circuit_transports+'.kml', map_transports, 1);
    Auriez-vous une idée ?

    Merci d'avance
    Images attachées Images attachées  

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonsoir,
    et si tu changes l'ordre de chargement que ce passe t-il ?

    Sinon regardes du coté de l'attribut <drawOrder> de fichier KML.

    KML Reference

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 92
    Points
    92
    Par défaut
    J'ai une liste déroulante qui laisse le choix entre plusieurs tracés, quand je sélectionne tracés cela fonctionne tandis que pour les autres j'ai le même souci, en faisant l'une ou l'autre de vos méthodes

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    J'ai une liste déroulante qui laisse le choix entre plusieurs tracés, quand je sélectionne tracés cela fonctionne tandis que pour les autres j'ai le même souci, en faisant l'une ou l'autre de vos méthodes
    pas tout compris.

    Le dernier KML affiché, s'affiche t-il systématiquement au dessus du précédent?

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 92
    Points
    92
    Par défaut
    Je reviens un peu tard sur le sujet car je l'avais laissé de côté, j'ai inversé le chargement des couches et cela fonctionne comme je veux.

    Dans mon précédent essai cela n'avait pas fonctionné et maintenant j’utilise jquery et jquery ui maps.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    j'ai inversé le chargement des couches et cela fonctionne comme je veux.
    <MODE INVISIBLE>
    Citation Envoyé par NoSmoking
    Bonsoir,
    et si tu changes l'ordre de chargement que ce passe t-il ?
    </MODE INVISIBLE>

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 92
    Points
    92
    Par défaut
    Ce n'est pas résolu car certaines fois la couche du tracé s'affiche bien en dessous du marqueur et d'autres fois non

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    et si tu changes l'ordre de chargement que ce passe t-il ?
    l'observation est la suivante
    Le premier en retour s'affiche sur la couche la plus basse
    Le second en retour s'affiche sur la couche en dessus
    ...etc...
    comme je présumes que ta fonction loadKMLFile est une fonction asynchrone rien ne te garanti que le 1er appel revient en 1er.

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 92
    Points
    92
    Par défaut
    Mon code utilise jquery ui map donc il est différent de celui mis dans le premier message de ce sujet, je supprimer les KML existants dans la map avant d'afficher d'autres KML :

    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
    $('#map').gmap({ 'center': '45.76161017250319,6.284972881353269', 'zoom': 12 }).bind('init', function() {
        $('#liste').change(function() {
          var ts_selected = $('#liste').val();
     
          var layers = $('#map').gmap('get','overlays');
     
          if ( layers['ts'] != undefined ) {
            layers['ts'].setMap(null);
          }  
     
          if ( layers['ts_poi'] != undefined ) {
            layers['ts_poi'].setMap(null);
          } 
     
          if ( ts_selected!='none' ) {        
            $('#map').gmap('loadKML', 'ts', 'http://example.com/circuits_ts/'+ts_selected+'.kml');
     
            $('#map').gmap('loadKML', 'ts_poi', 'http://example.com/poi_ts/poi_'+ts_selected+'.kml');                
          }
        });  
      });
    Je ne suis pas sur si on peut avoir le status si un kml a bien fini d'être chargé

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Je ne suis pas sur si on peut avoir le status si un kml a bien fini d'être chargé
    rien vu de bien concret dans la documentation.

    Par contre tu peux peu être détourner le problème en mettant un observateur sur la carte.

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 92
    Points
    92
    Par défaut
    P.S. j'ai fait comme cela, cela fonctionne, mais je n'utilise jquery ui map, j'enléve les kml déjà chargés sur la carte avant d'en afficher d'autres :

    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
    $('#map').gmap({ 'center': '45.76161017250319,6.284972881353269', 'zoom': 12 }).bind('init', function(ev, map) {
        $('#liste').change(function() {
          var ts_selected = $('#liste').val();
     
         if ( layersdisplayer!=undefined && layersdisplayer.length != 0 ) {
            for(i=0; i<layersdisplayer.length; i++  ) {							
    					layersdisplayer[i].setMap(null);
    				}
    				layersdisplayer.length = 0;
    			} 
     
          if ( ts_selected!='none' ) {  
            var layer_ts = new google.maps.KmlLayer('http://example.com/media/kml/circuits/'+ts_selected+'.kml' );
     
            layer_ts.setMap(map);
     
            layersdisplayer.push(layer_ts);
     
            google.maps.event.addListener(layer_ts, 'metadata_changed', function () {
              var layer_ts_poi = new google.maps.KmlLayer('http://example.com/media/kml/arrets/Arret_'+ts_selected+'.kml' );
     
              layer_ts_poi.setMap(map);
     
              layersdisplayer.push(layer_ts_poi);
            });            
          }
        });  
      });
    Avec jquery ui map, la variable layer_ts ne contient pas un objet alors qu'avec new google.maps.KmlLayer() on a bien un objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var layer_ts = $('#map').gmap('loadKML', 'ts', 'http://example.com/media/kml/circuits/'+ts_selected+'.kml');
    Je ne sais pas si c'est une bonne idée d'utiliser jquery ui map qui n'est plus maintenu depuis des lustres

  12. #12
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Effectivement, comme dans ton 1er lien, un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var groundOverlay = new google.maps.KmlLayer( 'http://nom_fichier_kml.kml', { map: oMap });
    // ajoput ecouteur
    google.maps.event.addListener( groundOverlay, 'status_changed', function(){
      if( this.status == google.maps.KmlLayerStatus.OK){
        // ici je peux lancer le chargement du 2éme KML
      }
    });
    Je ne sais pas si c'est une bonne idée d'utiliser jquery ui map qui n'est plus maintenu depuis des lustres
    Plus maintenu ne veux pas forcément dire obsolète mais qu'il faut se contenter de ce qu'il y a et pas plus en espérant qu'il n'y ai pas de bug

    Il existe également Gmap3, peut être plus aboutie, mais quoiqu'il arrive je ne trouve pas un gros apport à l'utilisation d'une telle librairie sauf bien sûr si tu utilises déjà jQuery et que tu en maitrise la syntaxe. Bien évidement il y aura vraisemblablement toujours un cas non prévu

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 92
    Points
    92
    Par défaut
    J'ai essayé avec le morceau que tu as mis dans ton message, cela fonctionne

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

Discussions similaires

  1. [Google Maps] Afficher un kml au clic sur un marqueur
    Par jac83 dans le forum APIs Google
    Réponses: 10
    Dernier message: 16/11/2014, 17h48
  2. Marqueur KML le plus proche d'une adresse
    Par josse34 dans le forum APIs Google
    Réponses: 0
    Dernier message: 29/06/2013, 17h18
  3. Réponses: 3
    Dernier message: 22/11/2011, 12h58
  4. Fichier KML avec marqueur et image
    Par jamesl dans le forum IGN API Géoportail
    Réponses: 4
    Dernier message: 21/05/2011, 11h04
  5. [font.size] Comment descendre en dessous de 8 ?
    Par Dry dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/04/2004, 16h01

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