#1 Fri 10 April 2009 10:22
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
[OpenLayers] Problème d'affichage
Bonjour,
J'ai un problème d'affichage sous OpenLayers. En fait, je récupère une couche en WMS dans un fichier HTML depuis un mapfile.
Dans mon fichier HTML, j'ai fait :
Code:
var map = new OpenLayers.Map('map', {maxExtent:new OpenLayers.Bounds(427829, 1740836, 579374, 1909383), units:"meters", projection:"EPSG:27593"}); -- -- -- -- -- map.zoomToMaxExtent();
Donc normalement je devrais me retrouver sur une carte avec un zoom sur les limites (427829, 1740836, 579374, 1909383).
Cependant, à l'affichage, je me retrouve sur une carte avec un zoom sur ces limites : (503000, 1825000, 504000, 1825300). Donc c'est comme si j'avais fait un énorme zoom sur ma carte d'origine. Et rien ne se passe lorsque je veux dézoomer.
Y a-t-il une erreur dans la logique ?
Merci d'avance.
Hors ligne
#2 Fri 10 April 2009 10:59
- René-Luc D'Hont
- Participant assidu
- Date d'inscription: 7 Nov 2006
- Messages: 328
- Site web
Re: [OpenLayers] Problème d'affichage
Lors de l'initialisation de ta carte OpenLayers va définir les résolutions des différents niveau de zoom. Afin de forcer le calcul de sorte qu'OpenLayers tienne compte de ton maxExtent et de la taille de l'élément div au sein du quelle sera dessiné la carte tu dois ajouter :
Code:
maxResolution: 'auto'
Ce qui donne :
Code:
var map = new OpenLayers.Map('map', {maxExtent : new OpenLayers.Bounds(427829, 1740836, 579374, 1909383), maxResolution : "auto", units : "meters", projection : "EPSG:27593" });
ça devrait passer
Hors ligne
#3 Fri 10 April 2009 11:05
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème d'affichage
Ah !!!!
Merci à toi ! C'était exactement ça.
J'ai rajouté "maxResolution:Auto" et tout s'est affiché sans problème (même si c'est toujours un peu lent).
Merci encore.
Cependant, mon fichier HTML ne veut pas s'afficher dans Firefox (avec le plugin Firebug) alors qu'il marche très bien sous IE. Faut-il télécharger des plugins supplémentaires ?
Dernière modification par Maxime31 (Fri 10 April 2009 11:09)
Hors ligne
#4 Fri 10 April 2009 11:43
- René-Luc D'Hont
- Participant assidu
- Date d'inscription: 7 Nov 2006
- Messages: 328
- Site web
Re: [OpenLayers] Problème d'affichage
Pour ton problème sous firefox + firebug, je te conseillerai de désactiver certaines fonctions de Firebug comme script, réseau ou console.
Tu n'as rien à ajouter ;-) surtout pas.
Sinon tu dois avoir une erreur qui expliques que ta carte ne s'affiche pas, ou autre possibilité as tu spécifié une taille à ton élément div que tu utilises pour dessiner la carte ?
Hors ligne
#5 Fri 10 April 2009 11:47
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème d'affichage
J'ai désactivé le plugin Firebug mais toujours rien...
Quant à ma balise div, elle ressemble à ça :
Code:
<div style="width:100%; height:100%" id="map"></div>
Hors ligne
#6 Fri 10 April 2009 12:13
- René-Luc D'Hont
- Participant assidu
- Date d'inscription: 7 Nov 2006
- Messages: 328
- Site web
Re: [OpenLayers] Problème d'affichage
Une hauteur de 100% correctement interprété par IE et mal par Firefox c'est bizarre...
Réactive l'extension FireBug et active la console. Tu devrais avoir une erreur.
Si tu n'a pas d'erreur, inspecte l'arborescence HTML de ta page.
Mais avant tout ça, essaye en exprimant en pixel al taille de ta div.
Hors ligne
#7 Fri 10 April 2009 12:20
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème d'affichage
Quand j'ouvre la console, elle m'indique "OpenLayers is not defined" pour la ligne : var map = new OpenLayers.Map(.....);
Voilà mon code HTML :
Code:
<html> <head> <title>Interface Carto Natura 2000</title> <script src="C:/ms4w/apps/OpenLayers-2.7/lib/OpenLayers.js"></script> </head> <script defer="defer" type="text/javascript"> var map = new OpenLayers.Map('map', {maxExtent:new OpenLayers.Bounds(427829, 1740836, 579374, 1909383), maxResolution: 'auto', units:'meters', projection:'EPSG:27593'}); //map.addControl(new OpenLayers.Control.PanZoomBar()); map.addControl(new OpenLayers.Control.Scale()); map.addControl(new OpenLayers.Control.ZoomToMaxExtent()); map.addControl(new OpenLayers.Control.MousePosition()); map.addControl(new OpenLayers.Control.LayerSwitcher()); map.addControl(new OpenLayers.Control.EditingToolbar()); var wms = new OpenLayers.Layer.WMS("Communes", "http://localhost/cgi-bin/mapserv.exe?map=c:/natura.map", {layers: "communes"}); map.addLayer(wms); var wms2 = new OpenLayers.Layer.WMS("Périmètre original", "http://localhost/cgi-bin/mapserv.exe?map=c:/natura.map", {layers: "perimetre_original"}); map.addLayer(wms2); map.zoomToMaxExtent(); </script> <body> <div style="width:500px; height:500px" id="map"></div> </body> </html>
Autre question : comment se fait-il que mon fichier HTML m'affiche toutes les couches déclarées dans mon mapfile alors que je ne lui ajoute que les couches "Communes" et "Périmètre original" ?
Hors ligne
#8 Fri 10 April 2009 13:27
- René-Luc D'Hont
- Participant assidu
- Date d'inscription: 7 Nov 2006
- Messages: 328
- Site web
Re: [OpenLayers] Problème d'affichage
Bug évident : Firefox ne connait les chemins de fichier à la Windows (C:/ms4w/etc...)
C'est pourquoi FireBug vous dit qu'OpenLayers n'existe pas, Firefox n'a pas chargé le fichier OpenLayers.js.
Je vous conseille d'utiliser un chemin relatif de type Web comme dans les exemples d'OpenLayers.
Par contre ne modifier rien pour les chemin des mapfiles.
Hors ligne
#9 Fri 10 April 2009 13:51
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème d'affichage
J'ai remplacé ma ligne par ceci :
Code:
<script src="./ms4w/apps/OpenLayers-2.7/lib/OpenLayers.js"></script>
Maintenant, je n'ai plus d'erreurs mais rien ne s'affiche quand même.
Ah si autant pour moi, il y a une erreur !
-> element is null Element.js (ligne 138)
var names = element.className;
Dernière modification par Maxime31 (Fri 10 April 2009 13:54)
Hors ligne
#10 Fri 10 April 2009 14:05
Re: [OpenLayers] Problème d'affichage
Maxime,
quel est le contenu du répertoire où se trouve le fichier HTML ? Si tu enlèves le nom de la page et que tu le remplaces par './ms4w/apps/OpenLayers-2.7/lib/OpenLayers.js' voies tu le contenu du fichier javascript ?
Sinon tu peux aussi mettre l'url complète : http://localhost/OpenLayers-2.7/lib/OpenLayers.js (juste un exemple, il faut vérifier que c'esd la bonne url du ficher .
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
#11 Fri 10 April 2009 14:14
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème d'affichage
Bonjour Yves,
J'ai mon fichier test.html à la racine de mon disque c: (c:/test.html).
Ne faut-il pas que je mette mes fichiers (test.html et natura.map) dans le dossier Apache de ms4w ?
Quant à l'URL pour OpenLayers, je n'arrive pas à y accéder, étant donné que le dossier OpenLayers-2.7 est sous c:/ms4w/apps, et non pas dans le dossier Apache.
Hors ligne
#12 Fri 10 April 2009 14:36
Re: [OpenLayers] Problème d'affichage
Maxime,
Je n'ai pas l'habitude de ms4w mais il doit y avoir un répertoire htdocs/ dans lequel tu accèdes à des sites internet, tu dois mettre ton fichier test.html et la bibliothèque dans ce répertoire. Ensuite si tu as :
* test.htm
* OpenLayers-2.7/lib/OpenLayers.js
Tu définiras l'url d'OL comme cela :
<script src="OpenLayers-2.7/lib/OpenLayers.js"></script>
Si htdocs/ n'est pas le bon répertoire, cela est possible, tu n'auras qu'à déplacer le répertoire et le fichier html
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
#13 Fri 10 April 2009 14:51
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème d'affichage
J'ai tout mis dans un même dossier sous le répertoire htdocs d'Apache mais je retombe sur la même erreur.
Hors ligne
#14 Fri 10 April 2009 15:05
- René-Luc D'Hont
- Participant assidu
- Date d'inscription: 7 Nov 2006
- Messages: 328
- Site web
Re: [OpenLayers] Problème d'affichage
Quand vous dites tout mis, vous avez mis toute la lib Openlayers ?
Puisque vous avez FireBug, vous pouvez consulter l'état de l'arborescence HTML. Vous pouvez donc regarder si le fichier OpenLayers est bien chargé mais aussi tous les autres ficheirs de la lib OpenLayers nécessaire dans le cas ou vous utilisez la version lib d'Openlayers. D'ailleurs si c'est le cas je vous conseille plutôt le fichier tout en un d'OpenLayers enfin si vous ne souhaitez pas touchés aux ficheir de la lib OpenLayers.
Hors ligne
#15 Fri 10 April 2009 15:12
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème d'affichage
Oui, dans un même dossier (qui est c:/ms4w/Apache/htdocs/projet_test/), j'ai mis :
- test.html
- natura.map
- OpenLayers-2.7/lib/OpenLayers.js
Et quand je regarde le HTML dans la console Firebug, j'ai une bonne centaine de lignes de la librairie OpenLayers :
Code:
<script src="OpenLayers-2.7/lib/OpenLayers.js"></script> <script src="OpenLayers-2.7/lib/OpenLayers/Util.js"></script> <script src="OpenLayers-2.7/lib/OpenLayers/BaseTypes.js"></script> <script src="OpenLayers-2.7/lib/OpenLayers/BaseTypes/Class.js"></script> etc...
Et sinon, j'ai une question d'affichage sous IE : j'ai 5 blocs LAYER dans mon mapfile, mais dans mon fichier HTML, je n'en appelle que deux. Comment se fait-il que cela m'affiche quand même toutes les couches déclarées dans mon mapfile quand je lance le fichier HTML ?
Dernière modification par Maxime31 (Fri 10 April 2009 15:30)
Hors ligne
#16 Fri 10 April 2009 15:37
Re: [OpenLayers] Problème d'affichage
Bonjour,
Pourquoi avoir déplacé le fichier .map ?
Les couches apparaissent car vous les avez activé par défaut avec le paramètre STATUS.
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
#17 Fri 10 April 2009 15:50
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème d'affichage
Euh j'ai déplacé le fichier .map pour aucune raison particulière, juste pour qu'il soit dans un même dossier que le html.
Effectivment, problème résolu pour les couches. J'avais laissé le STATUS à DEFAULT, j'ai donc tout remis sur OFF.
Merci !
Par contre, toujours ce problème sur Firefox... ("element is null --- var names = element.className; --- Element.js (ligne 138)")
Dernière modification par Maxime31 (Fri 10 April 2009 15:52)
Hors ligne
#18 Fri 10 April 2009 17:06
- René-Luc D'Hont
- Participant assidu
- Date d'inscription: 7 Nov 2006
- Messages: 328
- Site web
Re: [OpenLayers] Problème d'affichage
Nouvelle idée : Mettre l'élément script dans l'élément head, mettre le code d'initialisation dans une fonction main et appeller cette fonction sur le onload de l'élément body :
Code:
<html> <head> <title>Interface Carto Natura 2000</title> <script src="C:/ms4w/apps/OpenLayers-2.7/lib/OpenLayers.js"></script> <script type="text/javascript"> var map; function main() { map = new OpenLayers.Map('map', {maxExtent:new OpenLayers.Bounds(427829, 1740836, 579374, 1909383), maxResolution: 'auto', units:'meters', projection:'EPSG:27593'}); //map.addControl(new OpenLayers.Control.PanZoomBar()); map.addControl(new OpenLayers.Control.Scale()); map.addControl(new OpenLayers.Control.ZoomToMaxExtent()); map.addControl(new OpenLayers.Control.MousePosition()); map.addControl(new OpenLayers.Control.LayerSwitcher()); map.addControl(new OpenLayers.Control.EditingToolbar()); var wms = new OpenLayers.Layer.WMS("Communes", "http://localhost/cgi-bin/mapserv.exe?map=c:/natura.map", {layers: "communes"}); map.addLayer(wms); var wms2 = new OpenLayers.Layer.WMS("Périmètre original", "http://localhost/cgi-bin/mapserv.exe?map=c:/natura.map", {layers: "perimetre_original"}); map.addLayer(wms2); map.zoomToMaxExtent(); } </script> </head> <body onload="main();"> <div style="width:500px; height:500px" id="map"></div> </body> </html>
Hors ligne
#19 Fri 10 April 2009 17:29
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: [OpenLayers] Problème d'affichage
Alors là je dis très bien vu !!!
Ca marche très bien !
Grâce à vous, je peux partir en week-end plus léger...
Merci à tous !
Hors ligne