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

IGN API Géoportail Discussion :

Fermeture Popup marqueur et clic sur la Map


Sujet :

IGN API Géoportail

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 265
    Points : 179
    Points
    179
    Par défaut Fermeture Popup marqueur et clic sur la Map
    Bonjour,

    je n'arrive pas à voir où se situe le problème.

    Lorsque je clique sur la croix de fermeture d'un Popup affiché pour un marqueur, j'ai systématiquement "l'Event click" sur la Map qui est intercepté :
    "viewer.getMap().events.register('click',viewer, function(evt){...."

    Le but étant que la fermeture du marqueur, en cliquant sur la croix, ne provoque pas un "Event click" sur la map.

    Gestion Popup :
    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
    function onPopupClose(feature)
    {
    	selectControl.unselect(selectedFeature);
    }
    
    function onFeatureSelect(feature)
    {
    	selectedFeature = feature;
    	popup = new OpenLayers.Popup.FramedCloud("chicken", 
    	feature.geometry.getBounds().getCenterLonLat(),
    	null,
    	"<div style='font-size:.9em'>" + feature.data+"<br /></div>",
    	null, true, onPopupClose);
    	feature.popup = popup;
    	viewer.getMap().addPopup(popup);
    }
    
    function onFeatureUnselect(feature) {
        if (feature.popup) {
            popup.feature = null;
            viewer.getMap().removePopup(feature.popup);
            feature.popup.destroy();
            feature.popup = null;
        }
    }
    Gestion Event Click Map :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    viewer.getMap().events.register('click',viewer, function(evt)
    	{
    		var lonlat = this.getMap().getLonLatFromViewPortPx(evt.xy);
                    ........ 
    	);
    Exemple : http://www.mides.fr/fullmapeco/full_eco.php

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Tu enregistres bien la gestion de l'événement sur la carte donc tout clique dans la div de la carte lève l'événement ...

    Je ne vois pas l'intérêt de cette gestion vu que le paramètre closeBox est à true et que le click sur la fermeture de la popup est géré par onPopupClose

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 265
    Points : 179
    Points
    179
    Par défaut
    Ne maîtrisant certainement pas suffisamment tout cela, je ne vois pas comment je peux gérer l’affichage du marqueur sans cette gestion.

    Et je n’arrive toujours pas à comprendre pourquoi l’événement "click" sur la map est levé quand je clique sur le popup du marqueur pour le fermer.

    Bah, un jour peut être… en attendant, merci pour la réponse !!!!

  4. #4
    Membre habitué Avatar de nicolas.h
    Homme Profil pro
    Géomètre-programmeur
    Inscrit en
    Septembre 2012
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Géomètre-programmeur
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2012
    Messages : 122
    Points : 169
    Points
    169
    Par défaut
    Bonjour,

    De manière plus simple, je te propose d'aller voir ici:

    http://api.ign.fr/documentation/83/a...de-couches-kml

    Ce petit tutoriel, te montrera comment remanier ton fichier kml afin que tu puisse y modifier son contenu et sa forme (ex: possibilité de faire apparaitre des petites images qui représente tes ponctuels sur la carte).

    De plus, après essai, le problème de pop up et de clic sur la carte est bien géré ici.

    Seul bémol, ce tutoriel ne te montre pas comment modifier le style de tes popus, mais ceci te permettra tout de même de partir sur une base saine.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 265
    Points : 179
    Points
    179
    Par défaut
    Bonjour Nicolas.h,

    cette page est effectivement des plus intéressantes et offre pas mal d'exemples sur la gestion des couches KML, et Popup qui vont avec.

    Par contre, je crois que j'ai trouvé un exemple qui n'explique peut être pas mon "petit souci", mais qui apparait aussi sur d'autres cartes.

    Finalement, peut être est ce un fonctionnement normal ?

    Si l'on prend cet exemple, http://api.ign.fr/tech-docs-js/examp...ap_popups.html et si je rajoute un Event Click sur la Map, je retrouve le même résultat que sur ma carte : C'est à dire un Event qui est levé sur la Map, lorsque l'on clique sur "l’icône close" du marqueur.

    http://www.mides.fr/fullmapeco/test.html

    Par contre, si l'on bouge la carte avant de cliquer sur un marqueur, l’événement "Click" sur la carte n'est pas levé.

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    [1] si on intercepte le clic sur la div de la carte, alors tout clic dans la carte est géré par la méthode de rappel SAUF si cette dernière retourne false.

    [2] Ensuite, il faut empêcher l’événement de remonter au DIV parente ...

    Au final, j'essayerai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function onPopupClose(evt) {
        OpenLayers.Event.stop(evt);/*[2]*/
        selectControl.unselect(selectedFeature);
        return false;/*[1]*/
    }

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 265
    Points : 179
    Points
    179
    Par défaut
    Super, le résultat est là !!!!! Je vais quand même essayer de mieux "assimiler cette mécanique".

    Un grand merci.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/02/2014, 19h02
  2. [Google Maps] coordonnées d'un clic sur google map
    Par chercheurzaza dans le forum APIs Google
    Réponses: 1
    Dernier message: 05/08/2012, 14h15
  3. [MySQL] Compter Nbres de clics sur marqueur google map API v3
    Par math567 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/03/2012, 09h40
  4. Réponses: 3
    Dernier message: 27/07/2010, 09h41
  5. Gestion du clic sur la croix de fermeture !
    Par Atomikx dans le forum MFC
    Réponses: 3
    Dernier message: 15/11/2005, 11h47

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