Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Mon 20 October 2008 21:54

kiki170
Juste Inscrit !
Date d'inscription: 8 Oct 2008
Messages: 2

[OpenLayers] Protocole Http

Bonjour à toutes et tous,

Je suis en train de faire des essais avec la classe OpenLayers.Protocol.HTTP mais je peine un peu...

Je crée une map puis un layer de cette manière :

Code:

            var myprotocol = new OpenLayers.Protocol.HTTP({
                            format: new OpenLayers.Format.GeoJSON(),
                            url: "test4_.php",
                            params: {
                                idView: 169, 
                                model: 'startEnd'
                            }
                            
                        });

                // setup tiled layer
                var  base = new OpenLayers.Layer.WMS(
                    "frj:world - Tiled", "http://localhost:8080/geoserver/wms",
                    {
                        srs: 'EPSG:4326',
                        layers: 'frj:world',
                        format: 'image/png',
                        tiled: 'true',  
                       
                    },
                    {buffer: 0} 
                );         

                        
                view = new OpenLayers.Layer.Vector("View", {
                        strategies:  [fixedStrategy],
                        protocol: myprotocol,
                        styleMap: new OpenLayers.StyleMap({
                            "default": style,
                            "select": {
                                fillColor: "#8aeeef",
                                strokeColor: "#32a8a9"
                            }
                        })
                    });

                    map.addLayer(view);

Lors du premier chargement, la page m'affiche bien ma carte ainsi que mes features qui sont renvoyée par la page "test4_.php" au format GeoJSON.

Par contre, je voulais faire en sorte de pouvoir charger d'autre features en fonction de l'id passé en parametre lorsque je clique sur un bouton.

J'ai donc ajouté une méthode sync qui est appelée lorsque je clic sur un bouton :

Code:

            function _sync() {
                var resp = myprotocol.read();
                if (!resp.success()) {
                    alert("reading failed");
                    return;
                }
                
                view.destroyFeatures();
                if (!resp.features || resp.features.length <= 0) {
                    alert("No features to read");
                    return;
                }
                view.addFeatures(resp.features);
                alert("features successfully read");
            }

Malheureusement, j'ai a chaque fois une alert avec le reading failed. En utilisant Firebug, je constate que l'ouverture de la page se fait bien et que cela me retourne bien un autre GeoJSON.

Est-ce que ce que je fais est bien juste? Dois-je modifier quelque chose? Quelle serait la solution pour que cela fonctionne? :S

Je suis un peu perdu et ca fait depuis ce matin 08h00 que je bloque la dessus...

Merci d'avance.

PS : la méthode sync est inspirée du trunk/openlayers/examples/protocol-gears.html

Hors ligne

 

#2 Tue 21 October 2008 14:43

gde
Participant occasionnel
Date d'inscription: 8 Oct 2007
Messages: 18

Re: [OpenLayers] Protocole Http

Bonjour,

D'ou viens la fonction success() ?

ne faudrait pas plutôt tester si une feature, geometry ou featurecollection
est retournée ?

Hors ligne

 

#3 Tue 21 October 2008 15:32

kiki170
Juste Inscrit !
Date d'inscription: 8 Oct 2008
Messages: 2

Re: [OpenLayers] Protocole Http

J'ai tirer le concept de la méthode _sync de l'exemple : http://openlayers.org/dev/examples/protocol-gears.html

En ce qui concerne le test, malheureusement, resp.features est null.
Par contre, dans resp.priv (que je peux accéder avec JS), il y a une propriété nommée _object que je ne peux pas accéder en javascript mais que je peux consulter via Firebug. Et c'est la que j'ai vu qu'une réponse géoJSON était bel et bien renvoyée

Hors ligne

 

#4 Tue 21 October 2008 17:07

gde
Participant occasionnel
Date d'inscription: 8 Oct 2007
Messages: 18

Re: [OpenLayers] Protocole Http

L'exemple gears ne peut fonctionner qu'avec un des protocols de gears (et donc avec Google gears installé) pas avec HTTP.

Hors ligne

 

Pied de page des forums

Powered by FluxBB