#1 Tue 28 July 2009 09:26
deux cartes au sein d'une même page
Bonjour ,
Dans une page, je souhaite afficher une carte générale ainsi qu'un aperçu de la carte entière qui sera positionné autour d'un point que choisira l'utilisateur. Dans la page, la liste des points est affichée.
j'ai des soucis pour afficher deux cartes au sein d'une même page...La première carte possède deux couches: une ponctuelle et une avec en fond les contours communaux. La deuxième ne comporte pour l'instant qu'une couche ponctuelle.
Je suis passé par une page de test simplifiée. Seule une seule carte s'affiche: la première et non la deuxième. Le message d'erreur que me renvoie firebug est le suivant:
bounds has no properties
Voici le code. Si quelqu'un possède une piste de résolution...
Code:
<html> <head> <title>Ma page</title> <script src="http://localhost:8080/geoserver/openlayers/OpenLayers.js" type="text/javascript"></script> <script src="../../jquery/jquery-1.3.2.js" type="text/javascript"> </script> <script src="../../jquery_plugins/jquery.timers-1.1.2.js" type="text/javascript"></script> <script src="../../jquery_plugins/jquery.periodicalupdater.js" type="text/javascript"></script> <script type="text/JavaScript"> $(document).ready(function(){ ///création de la carte var map; var unpoints; var points; var coord; var premiereFois=true; var difference=0; var bounds = new OpenLayers.Bounds( 509235.36720909027, 4165874.0048436252, 600524.0683167534, 4312185.509794008 ); var options = { controls: [], maxExtent: bounds, maxResolution: 92.44082031250036, projection: "EPSG:27574", units: 'm' }; map = new OpenLayers.Map('map', options); Apercu=new OpenLayers.Map('Apercu', options); points = new OpenLayers.Layer.WMS( "topp:points - points", "http://localhost:8080/geoserver/wms", { srs: 'EPSG:27574', width: '750', height:'1050', styles: '', layers: 'topp:points', format: 'image/png', points: 'true', tilesOrigin : "538682.8875,4230763.65", transparent:true }, {buffer: 0} ); pointsApercu = new OpenLayers.Layer.WMS( "topp:points - points", "http://localhost:8080/geoserver/wms", { srs: 'EPSG:27574', width: '220', height:'220', styles: '', layers: 'topp:points', format: 'image/png', points: 'true', tilesOrigin : "538682.8875,4230763.65", transparent:true }, {buffer: 0} ); commune = new OpenLayers.Layer.WMS( "topp:Access-Geo_AnalyseCommunes2 - points", "http://localhost:8080/geoserver/wms", { srs: 'EPSG:27574', layers: 'topp:Access-Geo_AnalyseCommunes2', format: 'image/png', points: 'true', tilesOrigin : "509235.36720909027,4165874.0048436252", styles:'Access-Geo_COMMUNES_Default', isBaseLayer:true //styles:style }, {buffer: 0}); map.addLayers([points,commune]); Apercu.addLayer(pointsApercu); map.zoomToMaxExtent(); Apercu.zoomToMaxExtent(); }); </script> <style type="text/css"> #map { height:850px;width:750px; } #Apercu { height:220px;width:220px; } </style> </head> <body> <input type="hidden" id="compteur" value="justLoaded" width="500px"/> <table> <tr> <td> <div id="map" style="border:1px solid red;"> </td> <td> <div id="Apercu" style="border:1px solid grey;"> </td> </tr> </table> </body> </html>
geodata au cerema et petits billets en géomatique
Hors ligne
#2 Tue 28 July 2009 09:29
Re: deux cartes au sein d'une même page
Je sortirai bien la création de l'objet map en dehors de ta fonction,et rajouterai celle de apercu
Code:
var map, Apercu; $(document).ready(function(){ ///création de la carte var unpoints; var points; var coord; ...
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 Tue 28 July 2009 09:59
Re: deux cartes au sein d'une même page
Merci Yves de ta réponse,
J'ai fait comme tu as dit mais ça ne fonctionne tjs pas.
Si je mets
Code:
map.addLayers([commune,points]); Apercu.addLayer(commune);
dans la première carte map s'affiche les communes mais pas les points...
Aucun message d'erreur de FireBug
Si je mets
Code:
map.addLayers([commune,points]); Apercu.addLayer(points);
alors, c'est l'inverse qui se produit.
FireBug me renvoie le message d'erreur: bounds has no properties.
Si je mets
Code:
map.addLayers([commune,points]); Apercu.addLayer(pointsApercu);
Tout s'affiche dans la première carte mais rien dans la deuxième.
et FireBug me renvoie le message d'erreur: bounds has no properties.
Je suis un peu perdu...Une piste?
geodata au cerema et petits billets en géomatique
Hors ligne
#4 Tue 28 July 2009 10:13
Re: deux cartes au sein d'une même page
À mon avis les deux cartes doivent être totalement indépendante au niveau des objets JavaScript. Tu devrais écrire tes fonctions dans deux fichiers javascripts en utilisant un préfixe dans le nom de tes objets pour être sur qu'ils soient différents : m1Map et m2Map, etc.
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 Tue 28 July 2009 12:36
Re: deux cartes au sein d'une même page
Bonjour,
Ce exemple Mapfish devrait vous aider.
http://demo.mapfish.org/mapfishsample/t … _maps.html
Attention, seule une partie du code est liée à Openlayers, le reste est lié à Mapfish Client.
Cordialement
ThomasG
Dernière modification par ThomasG (Tue 28 July 2009 13:50)
Hors ligne
#6 Wed 29 July 2009 20:47
Re: deux cartes au sein d'une même page
bonjour,
j'ai finalement résolu mon problème.
En fait, deux variables de type map ne peuvent contenir les mêmes layers.
Il a donc fallu que je duplique chaque layer. De toute façon, cela était nécessaire afin d'attribuer à ma deuxième layer une taille plus réduite que la première.
Le second problème venait du fait que j'avais appliqué le paramètre transparent:true à une couche isolée dans une carte, d'où un message indiquant qu'aucune baseLayer n'était trouvée...
merci pour vos réponses!
geodata au cerema et petits billets en géomatique
Hors ligne