#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