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 :

popup sur marker


Sujet :

IGN API Géoportail

  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 popup sur marker
    bonjour,
    j'utilise l'api ign avec openlayers pour l'affichage de mes cartes et cela fonctionne très bien. Dernièrement j'ai rajouté en plus de l'affichage d'un fichier gpx un marker ... qui s'affiche aussi sans problème. Là ou je bute c'est sur la possibilité d'ouvrir une popup en cliquant sur le marker.
    le code d'intégration de mon marker qui fonctionne:
    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
    var couche_markers = new OpenLayers.Layer.Markers("départ sortie");
    
    var dimension_icon = new OpenLayers.Size(32,32);
    var offset_icon = new OpenLayers.Pixel(-(dimension_icon.w/2), -dimension_icon.h);
    var icon = new OpenLayers.Icon('http://vttplus.net/numeric/blueD.png', dimension_icon, offset_icon);
    
    
    lonlat=new OpenLayers.LonLat(<?php echo "".$row['departlong']."" ?>,<?php echo "".$row['departlat']."" ?>).transform(
              new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
              new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection
            );
    
    var mon_marker=new OpenLayers.Marker(lonlat, icon);
    
    couche_markers.addMarker(mon_marker);
    
    olmap.addLayer(couche_markers);
    et un de mes essais de popup que j'intègre juste après le marker ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    couche_markers.events.register("click", mon_marker, function(e){ // on click popup
        var popup = new OpenLayers.Popup.FramedCloud(id,
                    mon_marker.lonlat,
                    new OpenLayers.Size(200,200),
                    '<div class="popup">info example</div>',
                    null,true);
        olmap.addPopup(popup);
    });
    var labelepopup = new OpenLayers.Popup(null,
        EPSG,
        new OpenLayers.Size(37,13),
        '<p style="font-size: 8.5px;">blabla</p>'
    );
    olmap.addPopup(labelepopup);
    ... bien sur pas de popup qui s'affiche d'où ma question: où se situent les erreurs ??? (je précise que je ne suis pas du tout développeur, je me contente d'assembler des bouts de code pris à droite à gauche sur le net)
    merci par avance
    jacques

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 141
    Points : 156
    Points
    156
    Par défaut
    moi pour afficher le popup je fais comme ci-dessous (j'ai essayé d'adapter le 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
    function createPopup(feature)
    {
       feature.popup = new OpenLayers.Popup.FramedCloud(
          id,
          feature.geometry.getBounds().getCenterLonLat(),
          new OpenLayers.Size(200,200),
          '<div class="popup">info example</div>',
          null,
          true,
          function() {selControl.unselectAll();}
       );
       olmap.addPopup(feature.popup, true);
    }
    
    function destroyPopup(feature)
    {
       feature.popup.destroy();
    }
    
    selControl = new OpenLayers.Control.SelectFeature(
       [couche_markers],
       {
          clickout: true,
          toggle: false,
          multiple: false,
          hover: false,
          onSelect: createPopup,
          onUnselect: destroyPopup
       }
    );
    
    olmap.addControl(selControl);
    selControl.activate();

  3. #3
    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 betechsud
    merci pour ta proposition de code pour popup ... que j'ai essayée de suite mais ça ne marche pas .
    si ça peut aider, une page où l'on peut voir la carte, la trace gpx et le marker (sans popup ) c'est ici
    merci
    cordialement jacques

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 141
    Points : 156
    Points
    156
    Par défaut
    et en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var couche_markers = new OpenLayers.Layer.Markers("depart sortie");
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var couche_markers = new OpenLayers.Layer.Vector("depart sortie");
    ça marche mieux ?

  5. #5
    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
    non ça ne marche pas mieux ... même moins bien car le marker disparait ce qui me semble normal . J'essaie aussi d'autres pistes de mon côté
    cordialement

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 141
    Points : 156
    Points
    156
    Par défaut
    oups.

    il faudrait aussi modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var dimension_icon = new OpenLayers.Size(32,32);
    var offset_icon = new OpenLayers.Pixel(-(dimension_icon.w/2), -dimension_icon.h);
    var icon = new OpenLayers.Icon('http://vttplus.net/numeric/blueD.png', dimension_icon, offset_icon);
    
    
    lonlat=new OpenLayers.LonLat(5.96683614,43.28088080).transform(
              new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
              new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection
            );
    
    var mon_marker=new OpenLayers.Marker(lonlat, icon);
    
    couche_markers.addMarker(mon_marker);
    en :
    var layerStyle = new OpenLayers.Style({
    externalGraphic: "http://vttplus.net/numeric/blueD.png",
    graphicWidth: 32,
    graphicHeight: 32,
    graphicXOffset: -16,
    graphicYOffset: -32,
    pointRadius: 16
    });
    var layerStyleMap = new OpenLayers.StyleMap({'default': layerStyle});
    couche_markers.styleMap = layerStyleMap;
    var features = [];
    var mon_marker = new OpenLayers.Feature.Vector(
    new OpenLayers.Geometry.Point(5.96683614,43.28088080)
    );
    features.push(mon_marker);
    couche_markers.addFeatures(features);

  7. #7
    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 ...
    pour éviter de transformer tous mes fichiers j'ai créé une page d'exemple pour essayer ton nouveau code >> ici . Après avoir mis en place la transformation proposée, le marker semble avoir disparu, en fait il est situé en plein milieu de l’Afrique et si j’intervertis long et lat c'est pareil il reste en plein milieu de l’Afrique. Par contre il y a du mieux car le marker est cliquable ... l'infobulle n'apparait pas mais ça avance

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 141
    Points : 156
    Points
    156
    Par défaut
    pour le 1er problème, je pense qu'il faut faire une conversion de projection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var lonlat=new OpenLayers.LonLat(5.96683614,43.28088080).transform(
              new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
              new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection
            );
    var mon_marker = new OpenLayers.Feature.Vector(
    new OpenLayers.Geometry.Point(lonlat.lon,lonlat.lat)
    );
    Pour le 2ème problème, la variable id n'est pas définie et peut être remplacée par la chaîne "depart" par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function createPopup(feature)
    {
       feature.popup = new OpenLayers.Popup.FramedCloud(
          "depart",
          feature.geometry.getBounds().getCenterLonLat(),
          new OpenLayers.Size(200,200),
          '<div class="popup">info example</div>',
          null,
          true,
          function() {selControl.unselectAll();}
       );
       olmap.addPopup(feature.popup, true);
    }

  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
    re ...
    pour la conversion de projection j'aurai du y penser car elle était présente dans mon code de départ . Pour la variable id effectivement en la nommant "départ" ... CA MARCHE .
    merci pour tout Julien.
    cordialement jacques

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/04/2006, 14h34
  2. [SWT]Menu popup sur Table swt
    Par didjac dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 11/12/2005, 21h38
  3. ouvrir popup sur popup
    Par Dnx dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/10/2005, 13h18
  4. Popup sur un clic gauche
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/08/2005, 20h16
  5. menu popup sur une zone de text
    Par jesus144 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/05/2005, 23h15

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