x

Einzelne POI bei Dynamic POI erst ab einem gewissen Zoomlevel anzeigen


  1. Einzelne POI bei Dynamic POI erst ab einem gewissen Zoomlevel anzeigen · cbally (Gast) · 25.07.2011 15:48 · [flux]

    Hallo zusammen,
    ich nutze OSM zur firmeninternen Darstellung von Standorten und Informationen. Darum nutze ich das Openlayers POI layer example http://wiki.openstreetmap.org/wiki/Open … er_example

    var pois = new OpenLayers.Layer.Text( "My Points",
    { location:"./textfile.txt",
    projection: map.displayProjection
    });
    map.addLayer(pois);

    Gibt es eine Möglichkeit einzelne POI / Layer nur ab einem bestimmten Zoomlevel anzuzeigen.
    Ich habe mehrere Layer und möchte einzelne POI erst ab einem sehr hohen Zoomfaktor anzeigen.
    Über einen Hinweis freue ich mich sehr.
    Viele Grüße

    Christoph


    • Re: Einzelne POI bei Dynamic POI erst ab einem gewissen Zoomlevel anzeigen · !i! (Gast) · 25.07.2011 15:59 · [flux]

      Hallo cbally und natürlich erst mal herzlich willkommen hier bei uns im Forum 🙂

      Ich denke das ist hier was du suchst:
      http://openlayers.org/dev/examples/zoomLevels.html
      http://dev.openlayers.org/docs/files/Op … er-js.html

      Es geht auch über einen eigenen Style, ist allerdings ein bißchen aufwendiger.
      Schau doch mal den Quelltext meines Beispiels hier an: http://www.opennet-initiative.de/newmap/
      Dort wird im Style darauf reagiert, ob die Checkbox für die Beschriftungen gesetzt wurde.
      Ich bin mir aber sicher, dass ich das irgendwo schon mal einfacher gesehen hatte, als Parameter vom Layer oder so...


    • Re: Einzelne POI bei Dynamic POI erst ab einem gewissen Zoomlevel anzeigen · maxbe (Gast) · 25.07.2011 17:47 · [flux]

      Layer haben ein Attribut "maxResolution".

      Das ist die maximale Auflösung (in "Meter"/Pixel), bei der ein Layer sichtbar ist. Es geht los mit 156543.0399 (=Äquatorlänge/256) bei Zoom=0 und halbiert sich mit jedem Zoomlevel. "maxResolution:77" heisst z.B., dass der Layer erst ab Zoom=12 sichtbar ist, "maxResolution:612" entspricht Zoom=7.

      Probier mal

      var␣pois␣=␣new␣OpenLayers.Layer.Text(␣"My␣Points",
      {␣location:"./textfile.txt",
      projection:␣map.displayProjection,
      maxResolution:␣77
      });
      map.addLayer(pois);
      

      Dann sollte Dein POI-Layer erst ab Zoom 12 sichtbar sein, davor ist er auch im Layerswitcher ausgegraut.

      Grüße, Max

      PS: Habs an nem Beispiel probiert. Wenn Du hier ein bisschen reinzoomst, kommt ein Text-Layer mit Markern. Beim Rauszoomen verschwindet auch der GPX-Track.


    • Re: Einzelne POI bei Dynamic POI erst ab einem gewissen Zoomlevel anzeigen · cbally (Gast) · 25.07.2011 20:17 · [flux]

      Hallo maxbe,
      das war genau das, was ich suchte.

      Mit der Umrechnung komme ich irgendwie nicht klar.
      Wenn 612 Zoom=7 sein soll ist bei mir 77 Zoom=10 .
      Vielleicht habe ich nur die Umrechnung nicht verstanden.

      Vielleicht kannst du zu Dokumentationszwecken nochmal eine Tabelle posten.
      Ich würde mich sehr darüber freuen.

      Vielen Dank auch für das Beispiel.

      Viele Grüße

      Christoph


    • Re: Einzelne POI bei Dynamic POI erst ab einem gewissen Zoomlevel anzeigen · maxbe (Gast) · 25.07.2011 20:37 · [flux]
      max@offler:~$␣perl␣-e␣'$res=156543.0399;print␣"zoom␣␣Resolution\n";for($i=0;$i<=20;$i++){printf("%2d␣␣␣␣%11.4f\n",$i,$res);$res=$res/2;}'
      zoom␣␣Resolution
      0␣␣␣␣156543.0399
      1␣␣␣␣␣78271.5200
      2␣␣␣␣␣39135.7600
      3␣␣␣␣␣19567.8800
      4␣␣␣␣␣␣9783.9400
      5␣␣␣␣␣␣4891.9700
      6␣␣␣␣␣␣2445.9850
      7␣␣␣␣␣␣1222.9925
      8␣␣␣␣␣␣␣611.4962
      9␣␣␣␣␣␣␣305.7481
      10␣␣␣␣␣␣␣152.8741
      11␣␣␣␣␣␣␣␣76.4370
      12␣␣␣␣␣␣␣␣38.2185
      13␣␣␣␣␣␣␣␣19.1093
      14␣␣␣␣␣␣␣␣␣9.5546
      15␣␣␣␣␣␣␣␣␣4.7773
      16␣␣␣␣␣␣␣␣␣2.3887
      17␣␣␣␣␣␣␣␣␣1.1943
      18␣␣␣␣␣␣␣␣␣0.5972
      19␣␣␣␣␣␣␣␣␣0.2986
      20␣␣␣␣␣␣␣␣␣0.1493
      

      Bei Zoom=11 ist die Resolution 76.437.
      Wenn Du einen Layer bei zoom 11-20 anzeigen willst, musst Du seine maximale Auflösung auf irgendwas größer als 76.437 setzen, wenn Du ihn bei 12-20 anzeigen willst auf irgendwas kleiner als 76.437.

      In der Praxis würde ich aber irgendwas deutlich zwischen den Werten nehmen, also nicht (76 und 77) sondern (50 und 100) weil man weiss ja nie wie die jeweilige Anwendung rundet.

      Grüße, Max


    • Re: Einzelne POI bei Dynamic POI erst ab einem gewissen Zoomlevel anzeigen · SunCobalt (Gast) · 25.07.2011 20:42 · [flux]

      weißt Du, wie sich die Mapserver Zooms in OL Stufen umrechnen lassen? Sorry, ist OT, aber ich wittere meine Chance 😉


    • Re: Einzelne POI bei Dynamic POI erst ab einem gewissen Zoomlevel anzeigen · maxbe (Gast) · 25.07.2011 22:37 · [flux]

      Sorry, immer wenn ich denke, ich hätte irgendwas bei Mapserver kapiert, holt mich bald darauf die Realität ein... 😉


    • Re: Einzelne POI bei Dynamic POI erst ab einem gewissen Zoomlevel anzeigen · cbally (Gast) · 26.07.2011 15:27 · [flux]

      Danke allen Postern,
      mein Problem ist gelöst!
      Viele Grüße
      Christoph