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 :

Afficher un kml au clic sur un marqueur [Google Maps]


Sujet :

APIs Google

  1. #1
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut Afficher un kml au clic sur un marqueur
    Bonjour,
    Actuellement sur une carte, j'affiche des markers issus d'une base mysql pour positionner différents parcours Vtt dans un département. Chaque clic sur un marker déclenche l'ouverture d'une popup avec les infos correspondantes au parcours sélectionné. Les markers sont de couleurs différentes suivant la difficulté des parcours. Jusque là tout va bien, et même si mon code n'est pas forcément très propre cela fonctionne. -->voir la carte.
    j'aimerai maintenant qu'en plus de l'événement popup, le clic sur le marqueur déclenche en même temps l'affichage du Kml associé ... mais je n'y arrive pas, tout ce que j'essaie pour faire afficher une fonction "addkml?" au clic de la souris sur le marker échoue
    un peu d’aide serait la bienvenue
    cordialement Jacques

  2. #2
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    J'avance un peu dans mon souci d'affichage. J'arrive à afficher une trace au clic sur un marker (en plus du popup) avec un addlistener et une fonction new google.maps.KmlLayer :

    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
    function addMarker4(lat, lng, info) {
       var pt = new google.maps.LatLng(lat, lng);
       bounds.extend(pt);
       var marker = new google.maps.Marker({
          position: pt,
          icon: icon4,
          map: map
       });
     
       var popup = new google.maps.InfoWindow({ 
          content: info,
          maxWidth: 350
       });
       google.maps.event.addListener(marker, "click", function() {
       if (currentPopup != null) {
          currentPopup.close();
          currentPopup = null;
       }
       popup.open(map, marker);
          currentPopup = popup;
       });
       google.maps.event.addListener(marker, "click", function() {
          ctaLayer = new   google.maps.KmlLayer('http://vttplus.net/file/departementkml/04.kml');
          ctaLayer.setMap(map);
       });
    }
    Ca fonctionne mais bien sur j'affiche chaque fois la même trace kml (new google.maps.KmlLayer('http://vttplus.net/file/departementkml/04.kml')... Comment faire pour prendre en compte dans ma boucle while l'adresse url des kml qui est dans ma base <$contenu=$row['urlkml'];> (ci-dessous ma boucle while).

    Code php : 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
     
    $requete4 = mysql_query("SELECT * FROM donnees where  numerodep=83 and difficulte= 4");
    while ($row = mysql_fetch_array($requete4)){
       $nom=$row['nom'];
       $dif=$row['difficulte'];
       $denivplus=$row['denivplus'];
       $denivmoins=$row['denivmoins'];
       $altiplus=$row['altiplus'];
       $altimoins=$row['altimoins'];
       $duree=$row['duree'];
       $kms=$row['kms'];
       $lat=$row['parcourslat'];
       $lon=$row['parcourslong'];
       $departville=$row['departville'];
       $article=$row['article_id'];
       $departdesc=$row['departdesc'];
       $contenu=$row['urlkml'];
       echo ("addMarker4($lat, $lon,'<img src=\"http://vttplus.net/img/icone/fleche.png\"/>&nbsp;<font color=\"#551A8B\" size=4><b>$nom</b></font><br/><br/><u>départ:</u> $departdesc -> <b>$departville</b> <br/><br/><img src=\"http://vttplus.net/img/gif/vttdifficulte$dif.gif\" border=\"0\" width=\"28px\"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sur les cartes -> <a href=\"http://vttplus.net/file/cartes_ign/$nom/igntopo.php\"><img src=\"http://vttplus.net/img/carto/IGN.ht3.jpg\" border=\"0\"  width=\"28px\"/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;en 3D ->  <a href=\"http://vttplus.net/file/cartes_ign/$nom/gearthtopo.php\"><img src=\"http://vttplus.net/img/carte_profil/3d/globe.gif\" border=\"0\"  width=\"28px\"/></a></a><br/><br/>D+:<b>$denivplus</b>m   D-:<b>$denivmoins</b>m  <br/>altimaxi:<b>$altiplus</b>m   altimini: <b>$altimoins</b>m<br/>durée:<b>$duree</b>h   distance: <b>$kms</b>kms<br/><br/><a href=\"http://vttplus.net/articles.php?lng=fr&pg=$article&tconfig=1\"><b>description du parcours</b></a>');\n");
    }

    Merci pour votre aide.

  3. #3
    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
    Bonjour,
    - pourquoi ne pas mettre tout dans l'événement onclick du marker ?
    - pourquoi plusieurs fonctions qui font la même chose ?

  4. #4
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    bonjour NoSmoking,
    - pourquoi ne pas mettre tout dans l'événement onclick du marker ?
    - pourquoi plusieurs fonctions qui font la même chose ?
    c'est tout bête, toutes mes tentatives pour réunir les 2 fonctions ont échoué (je sais je ne suis pas très doué) ... j'ai donc ajouté les 2 mêmes fonctions à la suite . Mais ça ne résous ma mon souci d'affichage des kml dans la boucle while
    cordialement

  5. #5
    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
    Il te faut passer à la fonction la référence au fichier KML correspondant et ne pas la mettre en commun.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function addMarker(lat, lng, info, kml){
      // le code
    }
    D'autre part tout ce qui est commun, ex: <img src=\"http://vttplus.net/img/icone/fleche.png\"/>, n'a rien à faire dans les paramètres passés à la fonction, cela allège le code et améliore la clarté de celui ci

  6. #6
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    re
    c'est fou, ta seule indication de rajouter ,kml dans la fonction a suffit (ça fait 2 jours que je suis dessus) ... ça marche merci. Puisque je te tiens, j'ose , il me reste quelques autres soucis:
    1/ comment faire pour éviter qu'à l'affichage du kml la carte zoom au plus proche du kml (je voudrais garder le zoom original d'affichage des markers) ?
    2/ J'ai rentré l'adresse des fichiers kml avec des espaces dans les noms (dossiers et fichiers) et seuls les fichiers (et dossiers) dont les noms sont sans espaces s'affichent sur ma carte au clic sur le marker ... comment faire pour éviter de modifier tous les éléments de ma bdd en ajoutant %20 à la place des espaces ?
    cordialement

  7. #7
    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
    Il te faut regarder la documentation officielle et notamment google.maps.KmlLayer class, il y a une propriété qui devrait te ravir preserveViewport.

    Pour le 2 il existe encodeURIComponent, à voir son pendant coté PHP.

  8. #8
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    re ...
    Merci pour les infos supplémentaires, je vais regarder tout ça ...
    Encore merci pour le coup de main, je passe la discussion a résolue puisque j'ai obtenu la réponse à ma question initiale

    j'édite le post pour rajouter que preserveViewport ... ça fonctionne

  9. #9
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    bonjour,
    j'ai supprimé "résolu" juste le temps de poser une dernière question. Maintenant mes fichiers kml s'affichent bien (clic gauche pour la popup et les infos du parcours et clic droit pour l'affichage du kml), mais autant pour la popup je peux appuyer sur la croix pour la quitter, autant pour le kml il reste en permanence et j'aimerai pouvoir le (les) effacer. J'ai essayé et / ou mais rien y fait les kml(s) restent affichés. Sans doute n'ai-je pas mis le code au bon endroit (j'en ai essayé pas mal) ou je m'y prend mal (comme souvent). Si quelqu'un a une idée !!!
    cordialement
    la carte est toujours visible ici (tous les kml ne sont pas encore opérationnels)

  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
    Tout d'abord il aurait été préférable d'ouvrir une autre discussion pour ne pas tout mélanger.

    Concernant ton problème il faudrait savoir comment et quand tu souhaites tu faire disparaitre tes KML.

    - fermeture de l'infowindow : dans ce cas ferme ton KML sur l'événement closeclick de l'infoWindow.
    - sur click droit du marker : si le KML est visible, oKml.getMap() !== null, tu le fais disparaitre dans le cas contraire tu le fais apparaitre.

  11. #11
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    re
    désolé pour le mauvais endroit ... je vais essayer les pistes données et je clos cette discussion définitivement.
    bien cordialement

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

Discussions similaires

  1. Afficher un élément au clic sur un bouton
    Par auberstar dans le forum jQuery
    Réponses: 2
    Dernier message: 25/03/2013, 16h38
  2. CS5 / Afficher une image au clic sur un bouton
    Par yan1s dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 14/05/2012, 09h44
  3. [XL-2003] Masquer ou afficher des lignes suivant clic sur bouton voulu
    Par stephj dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/02/2011, 09h41
  4. [Google Maps] Afficher des infos après clic sur un point
    Par jbaudin dans le forum APIs Google
    Réponses: 0
    Dernier message: 24/12/2008, 11h54
  5. Afficher une image au clic sur un bouton
    Par lycaon dans le forum Général VBA
    Réponses: 4
    Dernier message: 23/04/2007, 19h21

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