Einzelne POI bei Dynamic POI erst ab einem gewissen Zoomlevel anzeigen

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/Openlayers_POI_layer_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

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

Ich denke das ist hier was du suchst:
http://openlayers.org/dev/examples/zoomLevels.html
http://dev.openlayers.org/docs/files/OpenLayers/Layer-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…

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.

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

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

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

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

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