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 Thu 07 August 2008 08:39

marjal_
Participant occasionnel
Date d'inscription: 26 Jul 2008
Messages: 14

récupérer étendu courante de la carte

Bonjour!

Décidemment, j'ai l'impression de spamer le forum avec toutes mes questions. Je vous remercie encore de votre aide.

Aujourd'hui, j'aimeraid développer un outil de requête spatiale à partir de mon fond de carte openlayers..
En fait je voudrait faire des requêtes dans ma base en fontion des coordonéees de la vue courante. L'utilisateur affichera les points qui se situent dans cette étendue.
Pour cela, il faudrait que je récupère la latitude et la longitude du coins supérieur droit et inférieur gauche de la vue courante...
Savez-vous quelle fonction openlayers renverrait cette information??
J'ai cherché dans la doc mais sans réels résultats...

Merci à tous pour vos réponses!!!

Hors ligne

 

#2 Thu 07 August 2008 09:17

marjal_
Participant occasionnel
Date d'inscription: 26 Jul 2008
Messages: 14

Re: récupérer étendu courante de la carte

Voilà, en fait j'ai retouché le code java de ZoomBox.js

zoomBox: function (position) {
        if (position instanceof OpenLayers.Bounds) {
            if (!this.out) {
                var minXY = this.map.getLonLatFromPixel(
                            new OpenLayers.Pixel(position.left, position.bottom));
                var maxXY = this.map.getLonLatFromPixel(
                            new OpenLayers.Pixel(position.right, position.top));
                var bounds = new OpenLayers.Bounds(minXY.lon, minXY.lat,
                                               maxXY.lon, maxXY.lat);
                var nInputXMin = document.getElementById("xmin");
                nInputXMin.setAttribute("value",minXY.lon);
               
                var nInputXMax = document.getElementById("xmax");
                nInputXMax.setAttribute("value",maxXY.lon);
               
                var nInputYMin = document.getElementById("ymin");
                nInputYMin.setAttribute("value",minXY.lat);
               
                var nInputYMax = document.getElementById("ymax");
                nInputYMax.setAttribute("value",maxXY.lat);
               
            } else {
                var pixWidth = Math.abs(position.right-position.left);
                var pixHeight = Math.abs(position.top-position.bottom);
                var zoomFactor = Math.min((this.map.size.h / pixHeight),
                    (this.map.size.w / pixWidth));
                var extent = this.map.getExtent();
                var center = this.map.getLonLatFromPixel(
                    position.getCenterPixel());
                var xmin = center.lon - (extent.getWidth()/2)*zoomFactor;
                var xmax = center.lon + (extent.getWidth()/2)*zoomFactor;
                var ymin = center.lat - (extent.getHeight()/2)*zoomFactor;
                var ymax = center.lat + (extent.getHeight()/2)*zoomFactor;               
                var bounds = new OpenLayers.Bounds(xmin, ymin, xmax, ymax);               
               
            }
            this.map.zoomToExtent(bounds);

et du coup, j'ai créer 4 variables input dans ma page principale qui contien mon form.
Seul petit problème c'est que là je récupère les coordonnées du rectangle de sélection et pas de l'étendue de la carte.
En fait quand je fais la même chose en mettant les valeurs xmin, xmax, ymin et ymax, elles ne retournent rien car on ne passe pas par la boucle else...
Je ne comprends pas quand est-ce que cette boucle est activée...
Si vous avez une idée..
Merci!

Hors ligne

 

#3 Thu 07 August 2008 10:06

freesnowpetrel
Participant assidu
Lieu: Pretoria, Afrique du Sud
Date d'inscription: 1 Mar 2007
Messages: 222

Re: récupérer étendu courante de la carte

Bonjour,

As tu essaye la fonction 'getExtent' de l'objet map ? cette fonction renvoie un objet  'OpenLayers. Bounds' qui correspond a l'etendu de la vue actuelle.
Puis la fonction 'toBBOX' de cet objet devrait te renvoye les coordonnees des bords de la carte sous forme d'une chaine de caracteres au format 'gauche,bas,droite,haut'.

Rodolphe

PS: Attention c'est du JavaScript pas du java, rien a voir...

Dernière modification par freesnowpetrel (Thu 07 August 2008 10:08)

Hors ligne

 

#4 Thu 07 August 2008 16:09

gretti
Juste Inscrit !
Lieu: Toulouse
Date d'inscription: 3 Oct 2005
Messages: 6

Re: récupérer étendu courante de la carte

Bonjour,

Vous pouvez jeter un oeil là-dessus
http://dev.openlayers.org/releases/Open … .getExtent
.
Je pense que ça correspond à ce que vous cherchez.

Hors ligne

 

Pied de page des forums

Powered by FluxBB