banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 05 June 2009 16:40

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

[OpenLayers][Popup] Pas d'affichage de la popup

Bonjour,

Je souhaite créer une carte avec des popups s'affichant lors de la sélection d'un objet de ma couche WFS.

La fonction popUP attribuée lors de la sélection d'un objet est bien active. Par contre, elle bute lors de la création de la popup...
Je ne vois pas trop ce qui bloque au niveau du code de création de la popup...

Voici le code de ma méthode:

Code:

function popUP(feature) {
                if(typeof popup!='undefined'){
                     popup.destroy();
                    }
                    
                //var content=e.attributes.descriptio;
                alert("1");
                popup = new OpenLayers.Popup.FramedCloud(
                        "id",
                        feature.geometry.getBounds().getCenterLonLat(),
                        null,
                        "<b>contenu</b>",
                        null,
                        false,
                        null
                        );
                alert("popup créé");
                feature.popup = popup;
                map.addPopup(popup);
                }

le alert "1" s'affiche bien mais pas le alert "popup créé".
J'en ai donc déduit que qqch n'allait pas au niveau de la création du popup mais je ne vois pas quoi...

Voici le code en entier, si jamais...

Code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link rel="stylesheet" href="/geoserver/style.css" type="text/css" />
    <style type="text/css">
        body {
            margin: 1em;
        }
        #map {
            width: 800px;
            height: 475px;
            border: 1px solid black;
        }
    </style>
    <script src="openlayers/OpenLayers.js"></script>
    <script type="text/javascript">

        var map;
        
        function init(){
            map = new OpenLayers.Map('map');
            var political = new OpenLayers.Layer.WMS(
                "State", 
                "/geoserver/wms",
                {layers: 'topp:tasmania_state_boundaries',
                 format: 'image/png'}
            );
                                
            var cities = new OpenLayers.Layer.WFS(
                "Cities",
                "/geoserver/wfs",
                {typename: 'topp:test_points_tasmania'},
                {
                    typename: 'test_points_tasmania',
                    featureNS: 'http://www.openplans.org/topp',
                    extractAttributes: true
                }
            );
            cities.style = OpenLayers.Util.applyDefaults({strokeColor: "#0000ff"}, 
                    OpenLayers.Feature.Vector.style["default"]);

            map.addLayers([political,cities]);
            
            map.addControl(new OpenLayers.Control.LayerSwitcher());

            map.zoomToExtent(
                new OpenLayers.Bounds(145.51045,-44.0,149.0,-40.5)
            );            
            
            // Instanciation du control selectFeature
            options = {       
             hover: false,
             onSelect: popUP,
            };     
            sf = new OpenLayers.Control.SelectFeature(cities, options)
            map.addControl(sf);
            sf.activate();
 
            function popUP(feature) {
                if(typeof popup!='undefined'){
                     popup.destroy();
                    }
                    
                //var content=e.attributes.descriptio;
                alert("1");
                popup = new OpenLayers.Popup.FramedCloud(
                        "id",
                        feature.geometry.getBounds().getCenterLonLat(),
                        null,
                        "<b>contenu</b>",
                        null,
                        false,
                        null
                        );
                alert("popup créé");
                feature.popup = popup;
                map.addPopup(popup);
                }            
        }
    </script>
  </head>
  <body onload="init()">
    <h3>OpenLayers WFS</h3>
    <div id="map"></div>
  </body>
</html>

Si jamais vous avez une idée de la source du problème, voire d'une méthode de débuggage,

En vous remerciant par avance..

Dernière modification par baobazz (Fri 05 June 2009 16:42)


geodata au cerema et petits billets en géomatique

Hors ligne

 

#2 Tue 09 June 2009 08:27

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: [OpenLayers][Popup] Pas d'affichage de la popup

bonjour,

le problème venait du fait que j'utilisais la libraire OL intégrée à geoserver.
Sa version est la 2.6.
En utilisant la 2.7, tout fonctionne parfaitement à présent.


geodata au cerema et petits billets en géomatique

Hors ligne

 

#3 Tue 09 June 2009 09:07

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: [OpenLayers][Popup] Pas d'affichage de la popup

Merci du retour Baobazz !

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

Pied de page des forums

Powered by FluxBB