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 :

récupérer la latitude et la longitude d'un clic


Sujet :

IGN API Géoportail

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut récupérer la latitude et la longitude d'un clic
    Bonjour à tous,

    Je commence à regarder l'API pour un site éducatif et associatif et je n'y connais rien en javascript. Je souhaiterais pouvoir récupérer la latitude et la longitude lors d'un clic de la souris.

    Je suis parti de cet exemple donné sur le site de doc :
    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
    57
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <script
            type="text/javascript"
            src="http://api.ign.fr/geoportail/api?v=VERSION&amp;key=VOTRE_LICENCE&amp;instance=maCarte&amp;">
        <!--
          -->
        </script>
        <script type="text/javascript">
        <!--
            ClickControl= OpenLayers.Class( OpenLayers.Control, {
                /**
                 * Constructor ClickControl
                 */
                initialize: function(options) {
                    OpenLayers.Control.prototype.initialize.apply(this,arguments);
                    this.handlerOptions= {
                        'single': true,
                        'double': false,
                        'pixelTolerance': 0,
                        'stopSingle': false,
                        'stopDouble': false
                    };
                    this.handler= new OpenLayers.Handler.Click(
                        this, {'click': this.trigger}, this.handlerOptions);
                },
    
                /**
                 * APIMethod: trigger
                 */
                trigger: function(e) {
                    var lonlat= this.map.getLonLatFromViewPortPx(e.xy).transform(
                        this.map.getProjection(), OpenLayers.Projection.CRS84
                    );
                    alert("Vous avez cliqué près de " + lonlat.lon + "N, " + lonlat.lat + " E");
                }
            });
    
            function initGeoportalMap() {
                //Cette fonction sera exécutée au chargement de la page HTML
                //La carte doit y être créée et paramétrée
                geoportalLoadmaCarte("plancheCartographique", "normal" );
                maCarte.addGeoportalLayers(maCarte.allowedGeoportalLayers);
                // création et insertion du nouveau contrôleur
                var monClic= new ClickControl();
                viewer.getMap().addControl(monClic);
                monClic.activate();
            }
          -->
        </script>
      </head>
      <body>
        <div id="plancheCartographique" style="width:800px;height:600px;"></div>
      </body>
    </html>
    Mais si la carte s'affiche bien, rien ne se passe lorsque je clique. il n'y a pas de lancement de la fonction mais je ne vois pas comment faire...

    Sinon, existe-il un macarte.getLong et macartegetLat ou quelque chose de ce genre ?
    Merci par avance de votre aide

  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 OpenLayers.Control.Click
    Le code en ligne comportait une erreur (relevée par un utilisateur par courriel), voici le nouveau (tel qu'il sera mis en ligne bientôt) :

    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
            OpenLayers.Control.Click= OpenLayers.Class( OpenLayers.Control, {
                defaultHandlerOptions:{
                    'single': true,
                    'double': false,
                    'pixelTolerance': 0,
                    'stopSingle': false,
                    'stopDouble': false
                },
               /**
                 * Constructor
                 */
                initialize: function(options) {
                    OpenLayers.Control.prototype.initialize.apply(this,arguments);
                    this.handlerOptions= OpenLayers.Util.extend({},this.defaultHandlerOptions);
                    this.handler= new OpenLayers.Handler.Click(
                        this, {'click': this.trigger}, this.handlerOptions);
                },
    
                /**
                 * APIMethod: trigger
                 */
                trigger: function(e) {
                    var lonlat= this.map.getLonLatFromViewPortPx(e.xy).transform(
                        this.map.getProjection(), OpenLayers.Projection.CRS84
                    );
                    alert("Vous avez cliqué près de " + lonlat.lon + "N, " + lonlat.lat + " E");
                }
            });
    
            function initGeoportalMap() {
                //Cette fonction sera exécutée au chargement de la page HTML
                //La carte doit y être créée et paramétrée
                geoportalLoadmaCarte("plancheCartographique", "normal" );
                maCarte.addGeoportalLayers(maCarte.allowedGeoportalLayers);
                // création et insertion du nouveau contrôleur
                var monClic= new OpenLayers.Control.Click();
                viewer.getMap().addControl(monClic);
                monClic.activate();
            }
    Apparamment le nom choisi (ClickControl) provoquait une erreur dans la définition de la classe (héritage?).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour votre réponse, cela fonctionne bien.
    Atention tout de même : il traine un viewer. à la fin du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    viewer.getMap().addControl(monClic);
    ce qu'il faut remplacer par maCarte

    Merci pour votre aide

  4. #4
    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
    Effectivement, il trainait un viewer ! C'est corrigé.
    De plus, pour être certain que le code va fonctionner (cela dépend des navigateurs ... IE en particulier), il vaut mieux insérer le code de la classe OpenLayers.Control.Click à l'intérieur de la méthode initGeoportalMap().

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    salut

    j'utilise ce code et le pop-up apparait bien. Par contre, si je clique a nouveau, il n'apparait pas.

    Il faut que le clique en dehors de la carte, puis clique a nouveau sur la carte pour qu'il aparaisse.

    Il y a un moyen pour eviter ca?

    Merci

  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
    Citation Envoyé par jvo8513 Voir le message
    j'utilise ce code et le pop-up apparait bien. Par contre, si je clique a nouveau, il n'apparait pas.

    Il faut que le clique en dehors de la carte, puis clique a nouveau sur la carte pour qu'il aparaisse.
    Pourrais-tu attacher le squelette de ta page pour voir l'ordre des opérations ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par dgrichard Voir le message
    Pourrais-tu attacher le squelette de ta page pour voir l'ordre des opérations ?
    En fait j'ai re-testé et re-re-testé et je n'ai plus le probeme

    Merci pour ta reponse en tout cas

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

Discussions similaires

  1. [Google Maps] Récupérer la latitude et la longitude et affectation à un formulaire
    Par Msysteme dans le forum APIs Google
    Réponses: 2
    Dernier message: 30/05/2014, 23h18
  2. [Google Maps] Récupérer la latitude et la longitude sur une map
    Par Msysteme dans le forum APIs Google
    Réponses: 4
    Dernier message: 28/05/2014, 23h13
  3. récupérer la latitude et la longitude d'un clic
    Par v_malien dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 13/11/2012, 19h57
  4. [Google Maps] Récupérer les latitudes et longitudes
    Par kfa1983 dans le forum APIs Google
    Réponses: 0
    Dernier message: 04/06/2011, 18h18

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