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 Sat 15 October 2016 21:27

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

case à cocher (open street map)

bonsoir a tous, j'ai au niveau de mon interface une case a cocher, le principe quand je coche j'appelle une fonction nommée "puits" et quand je décoche j'appelle une autre fonction sous le nom "chargement", la première fonction charge une map de type open street map contient une couche shape superposée et la deuxième sert à annuler cette superposition alors j'ai réfléchi a écraser la première map c'est à  dire charger le "open street map" vide pour annuler le rôle de la superposition.
si vous pouvez m'aider a me donner une fonction qui charge open street map (plus exactement rafraîchir mon interface avec de nouvelle "open street map vide ) ou d'autres idées, merci...

Hors ligne

 

#2 Tue 18 October 2016 12:31

Olivier69
Participant actif
Date d'inscription: 17 Mar 2016
Messages: 61

Re: case à cocher (open street map)

Bonjour,

j'ai pas trop compris le principe de tes fonctions, j'ai compris que tu as un fond de plan OSM et une couche shape et tu veux qu'une case à cocher enlève l'affichage de ta couche OSM et laisse afficher ta couche shape ? ai-je bien compris ?

Hors ligne

 

#3 Tue 18 October 2016 15:49

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

Non je veux que la case a cocher enlève l'affichage du shape et affiche juste l'OSM. l'option cocher affiche OSM+shape , l'option décocher affiche que l'OSM. Merci

Hors ligne

 

#4 Wed 19 October 2016 12:46

Olivier69
Participant actif
Date d'inscription: 17 Mar 2016
Messages: 61

Re: case à cocher (open street map)

Sous openlayers je suis arrivé à utiliser des checkbox pour gérer l'affichage de couches :

Ce code permet de créer une fonction pour gérer l'affichage de la couche en question :

   

Code:

<script type="text/javascript"> 

        function toggleControl(element){

             if(element.value == "NomdetacoucheSHAPE"){

          lyr_Communes.setVisible(element.checked);
         }
}
</script>

Après dans ton body, tu mets ce code qui crée la checkbox en fonction de la fonction crée précédemment :

Code:

<input id="NomdetacoucheSHAPE" name="overlay" type="checkbox" value="NomdetacoucheSHAPE" onclick="toggleControl(this);" autocomplete="on" checked >

Cela permet de gérer l'affichage ou non de ta couche shape avec la checkbox et après il faut juste mettre la couche OSM en base map pour qu'elle serve de fond de plan et qu'elle s'affiche tout le temps de base

Hors ligne

 

#5 Thu 20 October 2016 10:16

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

Merci bcp, juste une question 'lyr_Communes' représente quoi exactement?!

Hors ligne

 

#6 Thu 20 October 2016 10:54

Olivier69
Participant actif
Date d'inscription: 17 Mar 2016
Messages: 61

Re: case à cocher (open street map)

Oups ... j'ai oublié de modifier ... ^^' C'est le nom de la variable qui détient la couche en question qu'il faut au préalable déclarée, dans ton cas il faut remplacer lyr_communes par NomdetacoucheSHAPE.

Hors ligne

 

#7 Thu 20 October 2016 11:20

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

mon shape sous le nom 'puits' donc je mets 'puits' en ""lyr_Communes"" et en ""NomdetacoucheSHAPE"" c'est ça ?

Hors ligne

 

#8 Thu 20 October 2016 11:25

Olivier69
Participant actif
Date d'inscription: 17 Mar 2016
Messages: 61

Re: case à cocher (open street map)

Pas besoin, garde les noms que tu as déjà...

Tu déclares une variable puits qui contient ta couche puits
après tu remplies le code que je t'ai fourni de cette manière :

Code:

<script type="text/javascript"> 

        function toggleControl(element){

             if(element.value == "puits"){

          puits.setVisible(element.checked);
         }
}
</script>

Puis :

Code:

<input id="puits" name="overlay" type="checkbox" value="puits" onclick="toggleControl(this);" autocomplete="on" checked >

Normalement là j'ai rien oublié de modifier niveau nom...

Hors ligne

 

#9 Thu 20 October 2016 11:34

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

ok je vais la faire Merci Bcp ^^

Hors ligne

 

#10 Sat 22 October 2016 22:36

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

Finalement ça marche pas !

Hors ligne

 

#11 Mon 24 October 2016 09:09

Olivier69
Participant actif
Date d'inscription: 17 Mar 2016
Messages: 61

Re: case à cocher (open street map)

Peux-tu me montrer ou m'envoyer ton code ou une partie de ton code pour que je voie ce qui ne fonctionne pas ?

Hors ligne

 

#12 Mon 24 October 2016 11:11

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

bon quand je coche je fais appel a cette fonction:
function Puits()
{

              nord  = 691981.6875;
              est   = 3869826.5;
              sud   =732446.3125 ;
              ouest = 3902116.25;
              obj   = "puits";
              layers = "les_caracteristiques_geographiques:puits";
           

   route = new OpenLayers.Layer.WMS( "puits", "http://localhost:8081/geoserver/les_caracteristiques_geographiques/wms", {layers: "les_caracteristiques_geographiques:puits", transparent: true} );

  map.addLayer(route);
 
  map.setCenter(SBA_center, 7);
 
}

par la formule suivante:
<label> <br>
          <input name="puits_" type="checkbox" onClick="Puits();" value="">
          
        </label>
        Les puits


maintenant il me faut quand je décoche la case ,la couche 'puits' ne se superpose pas, j’espère vous m'avez compris

Hors ligne

 

#13 Mon 24 October 2016 11:55

Olivier69
Participant actif
Date d'inscription: 17 Mar 2016
Messages: 61

Re: case à cocher (open street map)

Rajoute cette fonctionne avant, pour définir la fonction qui gère l'affichage d'une couche :

Code:

function toggleControl(element){
             if(element.value == "puits"){
          puits.setVisible(element.checked);
         }
}
nima ninette a écrit:

bon quand je coche je fais appel a cette fonction:
function Puits()
{

              nord  = 691981.6875;
              est   = 3869826.5;
              sud   =732446.3125 ;
              ouest = 3902116.25;
              obj   = "puits";
              layers = "les_caracteristiques_geographiques:puits";
           

   route = new OpenLayers.Layer.WMS( "puits", "http://localhost:8081/geoserver/les_caracteristiques_geographiques/wms", {layers: "les_caracteristiques_geographiques:puits", transparent: true} );

  map.addLayer(route);
 
  map.setCenter(SBA_center, 7);
 
}


Change la fin par la formule suivante :

Code:

<input id="puits" name="overlay" type="checkbox" onclick="toggleControl(this);" value="puits" autocomplete="on" checked>
<label Les puits></label>

Est ce la checkbox s'affiche sur ta page ? Est ce que ça marche ? Sinon peut-tu m'indiquer d'éventuels messages d'erreurs ?

Hors ligne

 

#14 Mon 24 October 2016 15:05

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

ok je vais essayer et je vous dit Merci

Hors ligne

 

#15 Mon 24 October 2016 15:17

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

la case a cocher s'affiche par défaut en mode "coché" et elle ne fait rien même pas la superposition!

Hors ligne

 

#16 Mon 24 October 2016 15:45

Olivier69
Participant actif
Date d'inscription: 17 Mar 2016
Messages: 61

Re: case à cocher (open street map)

<input id="puits" name="overlay" type="checkbox" onclick="toggleControl(this);" value="puits" autocomplete="on" checked>
<label Les puits></label>


Le autocomplete="on" checked met la case coché par défaut remplace part

Code:

autocomplete="off"

Si la case ne gère pas l'affichage de la couche, c'est que je pense qu'il y a un problème de noms sur la variable qui détient la couche puits...

Pas de messages d'erreurs qui s'affichent notamment lorsque tu inspectes l'élément avec Chrome ou Firefox pour t'indiquer qu'est qui fonctionne pas ?

Hors ligne

 

#17 Tue 25 October 2016 10:04

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

Bonjour j'ai mis autocomplete="off" toujours quand je compile la case est toujours par défaut coché plus j'ai essayé de changer name par le nom de la case j'ai mis puits_ mais toujours pas comme si ne reconnait pas la fonction puits qui a été déclarée avant . j'ai une présentation ce mercredi sad

Hors ligne

 

#18 Tue 25 October 2016 10:27

Dof
Participant assidu
Lieu: Grenoble
Date d'inscription: 28 Oct 2009
Messages: 317
Site web

Re: case à cocher (open street map)

nima ninette a écrit:

Bonjour j'ai mis autocomplete="off" toujours quand je compile la case est toujours par défaut coché plus j'ai essayé de changer name par le nom de la case j'ai mis puits_ mais toujours pas comme si ne reconnait pas la fonction puits qui a été déclarée avant . j'ai une présentation ce mercredi sad


Bonjour, c'est normal il y a la balise "checked". Autocomplete c'est utilisé pour les input text pour proposer l'autocompletion à l'utilisateur
Pour plus d'aide il faudrait au moins la structure du code et les messages d’erreur..

Hors ligne

 

#19 Tue 25 October 2016 11:56

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

Bnonjour ,y'as pas d'erreur, mon programme contient une case a cocher quand je coche les puits (fichier shape) se superpose sur l'open street map , et quand je décoche aussi se superpose, alors il faut quand je décoche la couche disparaît.
j'ai commencé a charger l'open strret map:

function () {

   geographic = new OpenLayers.Projection("EPSG:32630");
   mercator = new OpenLayers.Projection("EPSG:900913");
   
   
   world = new OpenLayers.Bounds(nord,est,sud,ouest).transform( geographic, mercator );
   SBA_center = new OpenLayers.LonLat(-60874.76723, 4147318.47522).transform( geographic, mercator );
   myoption = { projection: mercator, displayProjection: geographic, units: "m",/* maxExtent: world,*/ maxResolution: 156543.0399 };
  //init();
   
    map = new OpenLayers.Map("map_canvas",myoption);

    osm = new OpenLayers.Layer.OSM();
    map.addLayer(osm);

var vlayer = new OpenLayers.Layer.Vector( "route" );
//Ajout du layer à la carte
map.addLayer(vlayer);
// Ajout de la barre d'outil de dessin
map.addControl(new OpenLayers.Control.EditingToolbar(vlayer));


   map.setCenter(SBA_center, 7);
    map.addControl (new OpenLayers.Control.MousePosition ());
   
   updateLocation(map.getCenter(), map.getZoom());
//-------------------------------
   
//-------------------------------
           
   map.addControl (new OpenLayers.Control.OverviewMap ());
   map.addControl(new OpenLayers.Control.PanZoomBar({position: new OpenLayers.Pixel(2, 8)})
 
   
   );
    map.addControl(new OpenLayers.Control.ScaleLine());
   //map.addControl(new OpenLayers.Control.Scale());
   var markers = new OpenLayers.Layer.Markers( "Markers" );
   map.addLayer(markers);

var size = new OpenLayers.Size(21,25);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new OpenLayers.Icon('http://localhost:8084/Geo/marker.png', size, offset);
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(-60874.76723, 4147318.47522),icon));
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(-60874.76723, 4147318.47522),icon.clone()));
 
    });


puis déterminer la fonction qui superpose les puits(ma couche):

function Puits()
{

              nord  = 691981.6875;
              est   = 3869826.5;
              sud   =732446.3125 ;
              ouest = 3902116.25;
              obj   = "puits";
              layers = "les_caracteristiques_geographiques:puits";
           

   route = new OpenLayers.Layer.WMS( "puits", "http://localhost:8081/geoserver/les_caracteristiques_geographiques/wms", {layers: "les_caracteristiques_geographiques:puits", transparent: true} );

  map.addLayer(route);
 
  map.setCenter(SBA_center, 7);
 
}

et à la fin  la case qui appel ma fonction pour la superposition :

<label> <br>
          <input name="puits_" type="checkbox" onClick="Puits();" value="">
          
        </label>
        Les puits

maintenant il me faut comment faire quand je décoche la couche ne se superpose pas c'est à dire elle n’apparaît pas  Merci beaucoup pour vos aides .

Hors ligne

 

#20 Tue 25 October 2016 12:22

Dof
Participant assidu
Lieu: Grenoble
Date d'inscription: 28 Oct 2009
Messages: 317
Site web

Re: case à cocher (open street map)

Béh oui, il faut savoir si la case est "checked" ou pas

Il faut donc modifier ta fonction "Puits" en lui ajoutant un paramètre (checked ou pas)

Code:

function Puits(checked)
{
if (checked){
 //le code pour afficher
} else {
 // le code pour cacher la couche
}

Et le HTML

Code:

<input name="puits_" type="checkbox" onchange="Puits(this.checked)">

Dernière modification par Dof (Tue 25 October 2016 12:22)

Hors ligne

 

#21 Tue 25 October 2016 17:00

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

j'ai pas fait le programme pour cacher la couche mais je vais au début essayer d'afficher juste l'open street map dans le cas de 'else' et je vois mercii je vais tester et je vous dis .

Hors ligne

 

#22 Tue 25 October 2016 22:47

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

Bonsoir ,j'ai essayé de faire ça
function Puits(checked)
{
if (checked){
             nord  = 691981.6875;
              est   = 3869826.5;
              sud   =732446.3125 ;
              ouest = 3902116.25;
              obj   = "puits";
              layers = "les_caracteristiques_geographiques:puits";
           

   route = new OpenLayers.Layer.WMS( "puits", "http://localhost:8081/geoserver/les_caracteristiques_geographiques/wms", {layers: "les_caracteristiques_geographiques:puits", transparent: true} );

  map.addLayer(route);
 
  map.setCenter(SBA_center, 7);
} else {


nord  = 691981.6875;
              est   = 3869826.5;
              sud   =732446.3125 ;
              ouest = 3902116.25;
              obj   = "puits";
              layers = "les_caracteristiques_geographiques:puits";
           

   route = new OpenLayers.Layer.WMS( "puits", "http://localhost:8081/geoserver/les_caracteristiques_geographiques/wms", {layers: "les_caracteristiques_geographiques:puits", transparent: false} );

  map.addLayer(route);
 
  map.setCenter(SBA_center, 7);

}


}
ça marche pas donc problème normalement au niveau de bloc else alors j'ai changé le bloc else par
else {
alert("vvvvv")
}

et quand je coche elle se superpose quand je décoche affiche le message "vvvvv" donc il me faut un  programme au niveau de 'else' pour annuler la superposition vous avez pas une idée svp ????; est ce que vous avez travaillez avant comme ce modèle , je serai trop contente pour votre aide.

Hors ligne

 

#23 Wed 26 October 2016 10:42

Dof
Participant assidu
Lieu: Grenoble
Date d'inscription: 28 Oct 2009
Messages: 317
Site web

Re: case à cocher (open street map)

Bonjour,
Le plus simple est de créer le "layer" avant puis de gérer son affichage, mais je ne suis pas expert en OL...
Peut être quelque chose comme cela


Code:

  nord  = 691981.6875;
est   = 3869826.5;
sud   =732446.3125 ;
ouest = 3902116.25;
obj   = "puits";
layers = "les_caracteristiques_geographiques:puits";
            

var route = new OpenLayers.Layer.WMS( "puits", "http://localhost:8081/geoserver/les_caracteristiques_geographiques/wms", {layers: "les_caracteristiques_geographiques:puits", transparent: false} ); 

map.setCenter(SBA_center, 7);
map.addLayer(route); 

Puits(checked) {
//   route.setVisible(checked); => ça devrait fonctionner aussi
 if (checked){
       route.setVisible(true);

} else {
       route.setVisible(false);

  }

}

Dernière modification par Dof (Wed 26 October 2016 10:43)

Hors ligne

 

#24 Wed 26 October 2016 10:48

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

ok je vais l'essayer ^^

Hors ligne

 

#25 Wed 26 October 2016 11:22

nima ninette
Participant assidu
Date d'inscription: 18 May 2016
Messages: 187

Re: case à cocher (open street map)

Dommage ça marche pas!! il me faut le cas else correcte
else {
// le code pour cacher la couche
}

Merci beaucoup pour tout ce que vous m'avez donné.

Hors ligne

 

Pied de page des forums

Powered by FluxBB