#1 Mon 22 June 2009 09:38
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
[OpenLayers] Ajouter des contrôles
Bonjour à tous,
Je suis actuellement en train de compléter mon interface OL et je voudrais rajouter plus de fonctionnalités dont notamment l'outil de mesure ou encore l'affichage de l'échelle.
J'ai donc fait ceci :
Code:
map.addControl(new OpenLayers.Control.Scale()); map.addControl(new OpenLayers.Control.Measure());
Cependant, je n'ai pas d'échelle qui s'affiche, ni d'outil de mesure (c'est-à-dire je ne vois pas de bouton permettant le lancement de cette fonction).
Donc j'imagine que ce n'est pas aussi simple.
Mais alors comment faire ? Merci d'avance
Hors ligne
#2 Mon 22 June 2009 09:47
Re: [OpenLayers] Ajouter des contrôles
Bonjour,
Pour l'échelle graphique, il faut rajouter des définitions css dans la feuille de style. Pour le bouton mesure, il faut regarder ce qui manque : les images ? le code css ? Normalement si tu utilise firebug tu pourras voir si le controle a été créé.
http://georezo.net/wiki/main:logiciels: … rs:firebug
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
#3 Mon 22 June 2009 10:13
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Ajouter des contrôles
Bonjour Yves,
Alors en fait, pour l'outil de mesure, j'ai une erreur si je mets :
Code:
map.addControl(new OpenLayers.Control.Measure());
Firebug me met "handler is not a constructor" dans le fichier Measure.js. Peut être quelquechose à rajoute dans les parenthèses dans Measure() ?
Quant à l'échelle, j'ai regardé dans le fichier css du thème par défaut d'OL et j'ai ceci :
Code:
.olControlScale { right: 3px; bottom: 3em; display: block; position: absolute; font-size: smaller; }
Ca devrait être bon, non ?
Hors ligne
#4 Mon 22 June 2009 10:22
Re: [OpenLayers] Ajouter des contrôles
commençons par Scale : es tu sur que l'échelle ne s'affiche pas en noir en bas à droite ? Parfois c'est assez peu visible !
Tu peux tenter de rajouter un color:red;background-color:white; dans ton CSS pour que cela soit plus visible (au cas où).
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
#5 Mon 22 June 2009 10:32
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Ajouter des contrôles
J'ai tenté de rajouter ce que tu m'as dit et même d'enlever font-size:smaller; mais rien n'y fait.
Quand j'utilise la fonction Inspecter de Firebug, si je passe sur la div correspondant au contrôle Scale, rien ne se passe. Et de plus, il est affiché en grisé par rapport aux autres div.
Hors ligne
#6 Mon 22 June 2009 10:36
Re: [OpenLayers] Ajouter des contrôles
Bonjour,
Peut on voir un bout de code ? Toujours plus simple que sans support
Merci,
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
#7 Mon 22 June 2009 10:41
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Ajouter des contrôles
Voila mon fichier HTML :
Code:
<html> <head> <title>Test</title> <script src="OpenLayers-2.7/lib/OpenLayers.js"></script> <script defer="defer" type="text/javascript"> //******************** Variables globales ******************** var map; function main(){ //******************** Création de l'objet map ******************** map= new OpenLayers.Map('map', {maxExtent:new OpenLayers.Bounds(416635, 1729996, 685832, 1934314), maxResolution: 'auto', units:'meters', projection:'EPSG:27593'}); map.addControl(new OpenLayers.Control.Scale()); //map.addControl(new OpenLayers.Control.Measure()); var communes = new OpenLayers.Layer.WMS("communes_nat", "http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/projet_test/natura.map", {layers: "communes_nat", transparent:true, format: "image/png"}); map.addLayer(communes); var scan25 = new OpenLayers.Layer.WMS("scan25", "http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/projet_test/natura.map", {layers: "scan25", format: "image/png"}); map.addLayer(scan25); map.zoomToMaxExtent(); } </script> </head> <body onload="main();"> <div style="width:1000px; height:700px" id="map"></div> </body> </html>
Hors ligne
#8 Mon 22 June 2009 11:26
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Ajouter des contrôles
Pas d'idée ?
Sinon, de manière générale, j'aimerais savoir comment on peut personnaliser son interface ?
C'est-à-dire que par défaut, on a les flèches de direction et les outils de zoom, mais j'aimerais savoir par exemple comment on peut transformer ces choses.
Par exemple, mettre le petit globe qui correspond au zoomToMaxExtent() dans un bouton à part et non pas coincer entre le zoom+ et le zoom-.
Ou encore, modifier les outils de zoom, parce que si je mets le contrôle PanZoomBar(), il se superpose aux outils de zoom par défaut.
Merci
Hors ligne
#9 Mon 22 June 2009 11:39
Re: [OpenLayers] Ajouter des contrôles
Pour le première problème je ne voie pas, le code me semble bon. Le problème pourrait venir d'un problème de cache, une mauvaise url (tu ne pointes pas sur une feuille de style correcte, etc.. Bref une petite erreur
Pour la deuxième, "tout" se fait par CSS.
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
#10 Mon 22 June 2009 12:33
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Ajouter des contrôles
Ok tout se fait dans le CSS mais lequel ?
Parce que lorsque je modifie le style.css du theme par defaut d'OL, rien ne se modifie.
Par exemple, j'ai essayé de changer le zoomToMaxExtent en modifiant le left ou le top mais il n'a pas bougé.
Est-ce normal ?
Hors ligne