OpenLayers 2.12 - mangelnde optische Feinabstimmung?

Probiere es mit der Vorgängerversion 2.11, siehe auch:
http://forum.openstreetmap.org/viewtopic.php?pid=251561#p251561

Gruß,
Mondschein

Ich hab’s bislang nur im Firefox getestet, sollen da andere Browser einen Unterschied machen?

Du hast Recht, im IE9 funktioniert’s. Kann man da was machen, “früher” ging’s doch auch?!

@Mondschein: Danke für den Hinweis, ich werde mir die 2.11’er Javascript-Dateien lokal ablegen. Ich hab’ keine Lust künftig bei jedem Versionswechsel alle meine Webseiten umbauen zu müssen.

Fireball,

Seltsamerweise funktioniert das in anderen Browser und mit der rechten Maustaste kann man sich die Kachel sogar zeigen lassen die da zu sehen sein sollte. Wird also an dem neuen CSS-Spielkram liegen. Schließe mich den Worten des Vorredners an: Wieder zurück auf 2.11 gehen ist derzeit Mittel der Wahl.

LG,

-moenk

Ich muss doch nicht wirklich alles aus der OpenLayers-2.11.tar.gz auf meine Homepage hochpumpen? Ich hab’s jetzt schon auf die “OpenLayers.js” und die Unterordner “art”, “img” und “theme” beschränken können. Dies sollte doch ausreichen, oder? Zumindest fallen mir keine Anzeige- und Bedienprobleme auf.

Würdet Ihr auch die “http://www.openstreetmap.org/openlayers/OpenStreetMap.js” lokal anlegen oder sollte man die besser immer von openstreetmap.org abholen lassen?

Ihr seid mir wie immer eine große Hilfe, danke.

Und wenn dann nach 4 Wochen irgendwas bei einem Kollegen auf einmal nicht funktioniert, suchst du dich kaputt. Tu’s lieber komplett drauf.

lokal, denn osm kann auch mal down sein.

Gruss
walter

p.s. ich hab mal versucht, folgendes zu erreichen: Lade vom OL-Server und wenn das nicht geht, nehme lokale Kopie. bin aber irgendwie gescheitert und hab es dann liegen lassen.

Gutes Argument. Ich wollte OL z.B. schon immer mal auf deutsch umstellen, im Unterorder “lib/lang” liegen ja die Dateien schon rum. Leider hab’ ich noch nicht rausgefunden, wie oder wo ich die ansprechen muss. Vermutlich muss ich dafür auch die “OpenLayers.js” aus dem lib-Ordner benutzen ?!

Ich nutze doch auch die Mapnik-Kacheln von “openstreetmap.org”, da nützt es mir doch recht wenig, wenn ich die “OpenStreetMap.js” lokal anlege, oder liege ich da falsch? Wenn OSM ausfällt, dann geht doch beides nicht, oder?

map.addLayer(new OpenLayers.Layer.OSM.Mapnik("Mapnik"));

Auf jeden Fall eine interessante Idee:

Irgendwo möglichst weit oben in deinem JS einfach mal “OpenLayers.Lang.setCode(‘de’);” eingeben. Dann übersetzt OL mit Hilfe der Regeln aus “lib/OpenLayers/Lang/de.js”.

jo stimmt wohl,

aber wenn du dem Anwender in deiner Anwendung auch andere Layer anbietest, die nicht auf openstreetmap.org liegen, gibt es dennoch Probleme beim Laden deiner HTML-Seite. Sein Browser will den Script ja auf jeden Fall laden, unabhängig davon, welches Layer der Anwender dann gerade aktiviert hat.

Aber eigentlich müsste er ja zuerst den lokalen Chache des Anwenders verwenden (?).

Plattenplatz sollte ja wirklich nicht der Grund sein. Das einzige, was mir so einfällt, ist ein Internetanschluß @home mit niedriger Bandbreite. Deshalb ja auch mein “Fallback-Versuch”.

Gruss
walter

Das leuchtet ein, besser nur ein leerer OL-Kasten (div) als gar keine Ansicht der Internetseite. Danke für die Erläuterung.

Sorry, aber das läuft bei mir nicht. In meinem eigenen Script führt dies zu keiner veränderten Übersetzung und in der OpenLayers.js funktioniert OL gar nicht mehr :frowning: Muss ich eventuell die viel kleinere “OpenLayers.js” im Unterverzeichnis “OpenLayers” dafür nutzen/ansprechen?


<script type="text/javascript">
    OpenLayers.Lang.setCode('de');
    var lat=51.0;
    var lon=13.0;
    var zoom=7;
    var map; 
    function init() {
    map = new OpenLayers.Map ("map", {
      controls:[
              new OpenLayers.Control.Navigation(), 
              new OpenLayers.Control.PanZoomBar({zoomStopHeight: 6}),
							new OpenLayers.Control.LayerSwitcher(),
              new OpenLayers.Control.ScaleLine({bottomOutUnits: "", bottomInUnits: ""}),
              new OpenLayers.Control.Attribution(),
              new OpenLayers.Control.OverviewMap({minRatio: 10})],
          maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
          maxResolution: 156543.0399,
          numZoomLevels: 19,
          units: 'm',
          projection: new OpenLayers.Projection("EPSG:900913"),
          displayProjection: new OpenLayers.Projection("EPSG:4326")
           } );
            layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
			      map.addLayer(layerMapnik);
            map.addLayer(new OpenLayers.Layer.OSM("Höhenschattierung", "http://toolserver.org/~cmarqu/hill/${z}/${x}/${y}.png" , {numZoomLevels: 17, isBaseLayer: false, transparent: true, opacity: 0.9999999999, visibility: true, attribution:'Hillshading by <a href=http://toolserver.org/~cmarqu/hikebike.html>toolserver.org</a>'}));
						layerMarkers = new OpenLayers.Layer.Markers("Standort anzeigen");
						map.addLayer(layerMarkers);
            var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
            map.setCenter (lonLat, zoom);
						var size = new OpenLayers.Size(40,46);
						var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
						var icon = new OpenLayers.Icon('marker.png',size,offset);
						layerMarkers.addMarker(new OpenLayers.Marker(lonLat,icon));
        }
    </script>

Ziemlich brutal - eigenlich sollte er ja die Browsereinstellung des Anwenders nehmen (Chinese in Berlin …).

etwa so: “OpenLayers.Lang.setCode(get_browser_language());” pseudo-code, da ich den aktuellen Namen nicht kenne.

Gruss
walter

Fireball,

beschränken ist gut, aber alles in art, img, lib und theme sollte schon auf der Server hochgeladen werden.

LG,

-moenk

Sorry. Ich hab übersehen, dass ich auch noch de.js einbinde:

<script src="../OpenLayers.js"></script>                    
<script src="../OpenLayers/lib/OpenLayers/Lang/de.js"></script>

Dein Beispiel mit OL 2.12, abgespeckt auf einen Mapnik-Layer sieht auf deutsch so aus: http://geo.dianacht.de/tests/langtest.html (deutsch ist da allerdings nur die Überschrift im Lagenumschalter “Grundkarte”).

Mir ist auch aufgefallen, dass Du Mapnik mit “OpenLayers.Layer.OSM.Mapnik(…)” einbindest. Das kommt noch aus einer zusätzlich eingebundenen “OpenStreetMap.js”, oder? Irgendwann hat OL angefangen, OSM schon einzubauen mit “OpenLayers.Layer.OSM(…)”. Dann braucht man OpenStreetMap.js vielleicht gar nicht mehr und hat eine Fehlerquelle weniger.

Zum Chinesen bin ich ja sowieso brutal und schreib alles auf deutsch. Hilft ihm ja nichts, wenn ich nur die 5 Elemente im OL anders anzeige.

Grüße, Max

Übrigens, “OpenLayers.Layer.GML” ist anscheinend weggefallen. War in 2.11 noch drin, aber “deprecated” und wer achtet schon auf sowas … :wink:

Wer also z.B. seine GPX-Tracks oder KML-Dateien so wie wie hier im Wiki beschrieben darstellt, und die automatischen Updates von openlayers.org mitmacht, wird ab heute nichts mehr davon sehen.

Grüße, Max

Das Problem hatte ich heute auch. Allerdings bei NOPs Wanderkarte. Mit diesem Code funktionierte es hier:


     <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
     <script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>

....

base = new OpenLayers.Layer.OSM('WRK', 'http://wanderreitkarte.de/topo/${z}/${x}/${y}.png', 
					{isBaseLayer:true,
					 tileOptions: {crossOriginKeyword:null},
					 attribution: "<a href='http://wanderreitkarte.de'><b>Nop's Reit-&Wanderkarte</b></a> Daten <a href='http://openstreetmap.org/'>OSM</a> DEM <a href='http://srtm.csi.cgiar.org'>CIAT</a>",
					 numZoomLevels: 16, opacity: 0.5 } );

Die entscheidende Zeile:

tileOptions: {crossOriginKeyword:null}

Bei der neuen Version ist der Standard “anonymous”. Siehe http://dev.openlayers.org/docs/files/OpenLayers/Layer/OSM-js.html#OpenLayers.Layer.OSM.tileOptions.

VG Petra

Geht mir auch so.

Zum Anpassen gibt es zwei Möglichkeiten:

  1. Das alte PanZoom Control wieder einbinden

Am einfachsten ist vermutlich, die default controls zu entfernen und manuell hinzuzufügen, mit Control.PanZoom (oder eben PanZoomBar) statt des neuen Control.Zoom:


    map = new OpenLayers.Map({
        div: "map",
        projection: "EPSG:900913",
        controls: []
    });
    map.addControl(new OpenLayers.Control.Navigation());
    map.addControl(new OpenLayers.Control.PanZoom());
    map.addControl(new OpenLayers.Control.ArgParser());
    map.addControl(new OpenLayers.Control.Attribution());

  1. Den CSS Style des Control.Zoom anpassen

Das Zoom Control Example zeigt, wie man die Zoom Buttons komplett austauschen kann, inklusive Text.

Es reicht aber auch, die Farbe der CSS Styles (siehe style.css) zu überschreiben:


        <style type="text/css">
            div.olControlZoom a {
                background: #00008B !important; /* fallback for IE - IE6 requires background shorthand*/
                background: rgba(0, 0, 139, 1.0) !important;
                filter: alpha(opacity=100) !important;
            }
            div.olControlZoom a:hover {
                background: #00008B !important;  /* fallback for IE */
                background: rgba(0, 0, 139, 0.7) !important;
                filter: alpha(opacity=70) !important;
            }
            @media only screen and (max-width: 600px) {
                div.olControlZoom a:hover {
                    background: rgba(0, 0, 139, 0.5) !important;
                }
            }
        </style>

Gruß,
Norbert

Auch laut Readme reicht OpenLayers.js + theme + img.

Das lib Verzeichnis benötigt man nur falls man fürs Debugging lib/OpenLayers.js einbinden will, das ist mit der komprimierten OpenLayers.js etwas schwierig. Im art Verzeichnis sind nur die SVG Vorlagen zum Erzeugen der pngs in den img Ordnern, das wird zur Laufzeit nicht benötigt.

Eine Frage am Rande: NOP’s Höhenlinien gibt’s die noch? Geht bei nämlich auch nicht mehr?!


map.addLayer(new OpenLayers.Layer.OSM("Höhenlinien", "http://wanderreitkarte.de/hills/${z}/${x}/${y}.png" , {numZoomLevels: 16, isBaseLayer:false, visibility:false, attribution:'<a href=http://wanderreitkarte.de><b>Nops Reit-&Wanderkarte</b></a>'}));

Danke, der Eintrag hat geholfen. Vor über einem Jahr hatte ich mich diesbezüglich schonmal fast “totprobiert”. Ich habe mir die “de.js” etwas angepasst (Base Layer = Art der Karte, Overlays = Zusatzinformationen), klingt so weniger technisch. :wink:

Aber natürlich! “OpenStreetMap.js” adé, verdammt guter Tipp, ich danke Dir.

Jawohl, jetzt brauche ich den lib-Ordner doch (de.js): hunderte Dateien, nur um 2 Wörter einzudeutschen, naja … . :confused:

Moin,

besten Dank an Petra: Das mit der tileOptions war genau richtig, so geht der deutsche Stil auch mit der OL 2.12!

Und danke auch an Norbert: So einfach kann das sein. Ich habe den ersten Weg gewählt, war am einfachsten so.

Damit bin ich dann auch wieder auf dem aktuellen Stand, wer eine Vorlage braucht möge sich bei YAPIS bedienen :wink:

Sehr schön auf die Lokalisierung, es sind zwar nur ein paar Worte im Layer-Switcher, aber warum nicht, der Lang-Code war in meinem Fall sowieso immer verfügbar.

LG,

-moenk

hi,

so kommt man ganz schnell - z.b. für produktive Seiten - auf 2.11 zurück:

Dann ist man den Druck ein wenig los, ohne dass man die alten Scripte lokal installieren muss.

Gruss
Walter

Die Höhenlinien sind da. NOP hat auf neue Rendertechnik umgestellt http://www.wanderreitkarte.de/news_de.php, was sich auch in der Datei http://wanderreitkarte.de/static/trackmap.js widerspiegelt.

VG Petra