x

Layer einblenden über externes Kontrollkästchen


  1. Layer einblenden über externes Kontrollkästchen · mkrebs (Gast) · 07.09.2011 12:08 · [flux]

    Hallo,
    mich würde einmal interessieren, wie man einen Layer außerhalb des (+) Layerswitchers
    an einer anderen Stelle in oder außerhalb der Karte ein- oder ausblenden kann.

    Hier ist so ein Beispiel, wo das wohl so ähnlich gemacht wird.
    http://kunden.kulturlandschaft-informat … akobswege/

    Ich habe über die Suche nichts gefunden, vielleicht weiß jemand wo sowas zu finden ist.

    Danke für eure Hilfe.


    • Re: Layer einblenden über externes Kontrollkästchen · viw (Gast) · 07.09.2011 12:50 · [flux]

      mkrebs wrote:

      Hallo,
      mich würde einmal interessieren, wie man einen Layer außerhalb des (+) Layerswitchers
      an einer anderen Stelle in oder außerhalb der Karte ein- oder ausblenden kann.

      Hier ist so ein Beispiel, wo das wohl so ähnlich gemacht wird.
      http://kunden.kulturlandschaft-informat … akobswege/

      Ich habe über die Suche nichts gefunden, vielleicht weiß jemand wo sowas zu finden ist.

      Danke für eure Hilfe.
      Gruß
      Michael

      Schau dir mal den openstreetbrowser an. der macht das genau so.
      Aber im Prinzip sollte es kein Problem sein, wenn du javascript programmierst, musst du einfach nur auf die variablen in Openlayers zu greifen. die machen ja auch nichts anderes als den Layer visble oder invisble zu setzen. Du musst nur halt das Kästchen draußen so programmieren.


    • Re: Layer einblenden über externes Kontrollkästchen · mkrebs (Gast) · 07.09.2011 14:50 · [flux]

      Vielen Dank für den Hinweis. Der macht sowas das stimmt.
      Im Prinzip ist es bestimmt kein Problem, aber ich muss mir das alles an Codeschnipsel selbst beibringen.
      Gibt es das vielleicht auch irgendwo zu sehen?
      Danke


    • Re: Layer einblenden über externes Kontrollkästchen · maxbe (Gast) · 07.09.2011 17:17 · [flux]

      mkrebs wrote:

      Gibt es das vielleicht auch irgendwo zu sehen?

      Ich hätte ein Beispiel. Aber ausser dass Du irgendwo von Layer.setVisibility() gebrauch machen musst und das an ein Eingabeelement mittels onclick/onchange o.ä. dranhängen, hilft das nicht viel.
      Die Gestaltung von Bedienelementen ist doch recht individuell. Ausserdem kann das auch schnell beliebig kompliziert werden (z.B. ginge bei meinem Beispiel kein Permalink, weil die Häkchen zwar die Karten steuern können, aber nicht umgekehrt...)

      Grüße, Max


    • Re: Layer einblenden über externes Kontrollkästchen · mkrebs (Gast) · 09.09.2011 06:29 · [flux]

      Hi Max. das würde mir schon helfen.
      Ich muss sehen, ob ich das verstehe und anpassen kann

      Diese Funktion blendet also ein und aus, oder?

      <!--
      var map,staedte,grenzen;
      // Hier wird die visibility des global definierten(!) Layers fuer Stadt und
      // Grenzen ein- und ausgeschaltet
      function toggleControl(element){
      if(element.value == "mitstadt"){
      staedte.setVisibility(element.checked);
      }
      if(element.value == "mitgrenzen"){
      grenzen.setVisibility(element.checked);
      }
      }
      Dann muss ich meinen Layer so anpassen, dass beim einem "value" das an einem Konbtrollkästchen ängt der Layer eben ein oder ausgeblendet wird.

      Das schau ich mir an.
      Danke


    • Re: Layer einblenden über externes Kontrollkästchen · maxbe (Gast) · 09.09.2011 08:23 · [flux]

      mkrebs wrote:

      Diese Funktion blendet also ein und aus, oder?

      Das da ist ein Ankreuzfeld:

      <input␣type="checkbox"␣name="overlay"␣value="mitgrenzen"␣id="mgrenzen"
      onclick="toggleControl(this);"␣autocomplete="off"␣>␣Mit␣Grenzen
      

      Eigentlich brauche ich nur den Wert von "value", aber ich hab die Erfahrung gemacht, dass ungesetzte "ID"s und "name"s Ärger machen. "autocomplete=off" ist ein workaround für den Firefox, der lässt beim Neuladen der Seite die Häkchen gesetzt, was oft nützlich ist, aber hier eher doof (hier wird ja beim Aufruf der Seite der Zustand der Häkchen nicht abgefragt, auch ein Problem, das man mit dem mitgeliefertem Switcher nicht hat...).

      onclick="toggleControl(this);" heisst "wenn einer draufklickt, ruf die Funktion "toggleControl" auf und übergebe das angeklickte Objekt.

      In der Funktion "toggleControl(element)" wird abgefragt, welches Häkchen angeklickt wurde. Das steht in "element.value". Ausserdem steckt in "element.checked" noch ein Wert (true/false), der angibt, ob das Häkchen gerade gesetzt oder ungesetzt ist.

      "Layer.setVisibility(true/false)" schaltet den Layer sichtbar/unsichtbar. Den Parameter hole ich aus der Zustand des Häkchens in "element.checked". Der Layer muss von dieser Funktion aus erreichbar sein, deshalb sind die Layer in der Seite als globale Variablen definiert.

      Übrigens: Falls es Dir nur darum geht, dass die Nutzer diesen LayerSwitcher hinter dem winzigen Plus nicht finden... Meine Testkandidaten waren immer damit zufrieden, dass man den LayerSwitcher beim ersten Aufruf der Karte einfach schon aufgeklappt startet. Das "-" zum wegklappen finden sie und erinnern sich auch daran, wie man den Switcher wieder aufklappt.

      bau ich so ein:

      var␣layer_switcher␣=␣new␣OpenLayers.Control.LayerSwitcher();
      map.addControl(layer_switcher);
      layer_switcher.maximizeControl();
      

      Grüße, Max