Pages: 1
- Sujet précédent - Openlayers - Problème modification couche Vecteur si plus de 80 layers - Sujet suivant
#1 Fri 14 February 2014 16:08
- jlebouvier
- Juste Inscrit !
- Date d'inscription: 27 Feb 2007
- Messages: 8
Openlayers - Problème modification couche Vecteur si plus de 80 layers
Bonjour,
J'ai un petit problème avec Openlayers.
Dans un layer de type Vecteur, je n'arrive plus a modifier un objet dès que je dépasse les 80 couches (enfin un baselayer et 80 layers en plus). Comme si l'évènement de sélection n'était plus émis.
Dans l'exemple ci-dessous, je met en place une carte avec un baselayer.
Ensuite, j'ajoute 79 fois cette même couche (non définies en baselayer et non visibles. Testé avec d'autres couches chez moi mais plus simple pour expliquer mon problème ici).
J'ajoute enfin un layer de type Vecteur.
Une fois la carte il est possible de créer un polygone puis en passant sur l'outil de modification (situé à gauche de l'outil des polygone) de modifier cet objet. Jusque là tout va bien.
Par contre, si ajoute une couche de plus en dé-commentant la ligne suivante (34 normalement) :
Code:
//mlayer2 = new OpenLayers.Layer.Vector("mlayer2", {renderers: renderer})
l'opération précédente ne fonctionne plus. Impossible d'avoir la sélection de mon objet.
Code:
<!DOCTYPE html> <html xmlns="http://www.W3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge" > <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <meta name="author" content="JLebouvier" / <meta name="viewport" content="width=device-width" /> <title>TESTS</title> <style type="text/css"> .olControlEditingToolbar .olControlPersonnaliseFeatureItemInactive{background-position: 0px 0px;} .olControlEditingToolbar .olControlPersonnaliseFeatureItemActive {background-position: 0px -24px;} </style> <!--OPEN LAYERS --> <link rel="stylesheet" type="text/css" href="http://sig.clermont-ferrand.fr/js/OpenLayers/2.13/theme/default/style.css"> <script type="text/javascript" charset="utf-8" src="http://sig.clermont-ferrand.fr/js/OpenLayers/2.13/OpenLayers.js" ></script> <script type="text/javascript" charset="utf-8"> NB_LAYERS = 79 function init(div_carte) { var listeCouches= new Array(); listeCouches.push (new OpenLayers.Layer.WMS( "OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0?", {layers: 'basic', isBaseLayer: true})); for (i=0; i<NB_LAYERS; i++) { listeCouches.push (new OpenLayers.Layer.WMS( "OpenLayers WMS : " + i, "http://vmap0.tiles.osgeo.org/wms/vmap0?", {layers: 'basic'}, {visibility : false})); } // Layers vectoriels mlayer1 = new OpenLayers.Layer.Vector("mlayer1") mlayer2 = new OpenLayers.Layer.Vector("mlayer2") listeCouches.push (mlayer1) listeCouches.push (mlayer2) function report(event) { console.log(event.type, event.feature ? event.feature.id : event.components); } mlayer1.events.on({ "beforefeaturemodified": report, "featuremodified": report, "afterfeaturemodified": report }); // Mise en place de la carte var Carte = new OpenLayers.Map({ div: div_carte, layers:listeCouches }); // Outils //polygon = new OpenLayers.Control.DrawFeature(mlayer1, OpenLayers.Handler.Polygon) modify = new OpenLayers.Control.ModifyFeature(mlayer1, {title: "Modifier un objet", displayClass: "olControlPersonnaliseFeature"}) var panel = new OpenLayers.Control.EditingToolbar(mlayer1); panel.addControls([modify]); // Ajout des controles Carte.addControl(new OpenLayers.Control.LayerSwitcher()); Carte.addControl(new OpenLayers.Control.MousePosition()); Carte.addControl(panel); Carte.setCenter(new OpenLayers.LonLat(0, 0), 3); console.log(listeCouches.length + " layers chargés dans la carte") } </script> </head> <body onLoad="init('Carte1')" onResize="" > <!----> <div id="Carte1" style="width:100%;height:800px;border:dotted"> </body> </html>
Avez-vous une idée ?
Hors ligne
#2 Sun 16 February 2014 12:51
Re: Openlayers - Problème modification couche Vecteur si plus de 80 layers
Bonjour,
Vous semblez effectivement atteindre les limites :
http://trac.osgeo.org/openlayers/wiki/F … dQuestions
What is the maximum amount of layers I can have in my OpenLayers Map?
The limit is about 75. After that, layers can appear above popups. This has to do with the z-index in CSS (determines what is 'above' what). Layers (overlay) start at a z-index of 325. Popups start at 750. Controls start at 1000.
Every layer 'takes up' about 5 indexes, so it will reach it's limit at around 75 layers. You cannot have more than 250 popups for the same reason.
If you need more than 75 layers, consider destroying the ones you don't show instead of hiding them and recreate them when needed.
Hors ligne
#3 Mon 17 February 2014 08:50
- jlebouvier
- Juste Inscrit !
- Date d'inscription: 27 Feb 2007
- Messages: 8
Re: Openlayers - Problème modification couche Vecteur si plus de 80 layers
Bonjour,
Merci pour le lien. Effectivement je vais devoir revoir une partie de mon code.
Bonne journée.
Hors ligne
Pages: 1
- Sujet précédent - Openlayers - Problème modification couche Vecteur si plus de 80 layers - Sujet suivant