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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 28 July 2009 09:26

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

deux cartes au sein d'une même page

Bonjour smile,

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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

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

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

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

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 948
Site web

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

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

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

 

Pied de page des forums

Powered by FluxBB