Hilfe bei OpenLayers

Hallo :slight_smile:

Mein erstes, “ernstes” Problem :smiley:

Ich hab aus Interessenfreudigkeit dieses Beispiel auf meinen Computer übernommen: http://wiki.openstreetmap.org/wiki/OpenLayers_Local_Tiles_Example
Habs ausprobiert und, ist logisch, es wird nichts angezeigt.
Wenn ich das Häkchen dann bei “Local Tiles” rausnehme, lädt er die Tiles ja vom Hauptserver.
Nur ist mir aufgefallen dass die Anzeige unglaublich blass ist im Gegensatz zum “normalen” OpenLayers.

Ich hab ein Freund gefragt ob er ein Screenshot auf seinem Webserver hochladen kann, Link: http://david-guillot.tk/OpenLayers-Blass.png

Ich habs 1 : 1 vom Example übernommen.

Hoffe dass verständlich ist was ich meine und ihr mir helfen könnt!

Ich glaube, das soll so sein…

Im Wiki steht

Die Tiles vom Hauptserver werden mit 40% Deckkraft dargestellt (wegen “layerMapnik.setOpacity(0.4);”). Das hat der Programmierer so gemacht, damit du einen Unterschied zwischen den runtergeladenen und den lokal gespeicherten Tiles sehen kannst. Nimm die Zeile mit “setOpacity” raus, dann ist die Blässe weg, aber du siehst auch nicht mehr, welche Kacheln dir lokal noch fehlen.

Grüße, Max

Guten Morgen :slight_smile:

Stimmt, das rausnehmen der Zeile hat geholfen!
Ich versteh nun aber noch nicht ganz den Sinn davon.
Bei mir sind auch die 2 Layer, wenn der Haken drinne’ ist. Sieht man beim Zoomen das Mapnik zuerst lädt und dann die Tiles geladen werden.
Aber wo ein “Offline” Tile fehlt, wird bei mir (in Firefox/Ubuntu) ein rosa farbenes Tile mit dieser kleinen gebrochenen Papierseite angezeigt.
Wozu wird der “hintere Layer” dann abgeschwächt?

Kurz: Wo kein Tile ist wird ein Fehler angezeigt, wozu dann den Mapnik Layer abschwächen?

bau mal das ganz oben ein, damit sollte das Rosa weg sein - und dann macht es wohl Sinn.


// avoid pink tiles
   OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
   OpenLayers.Util.onImageLoadErrorColor = "transparent";

gruss
walter

Ich weiß nicht wo ganz oben?
Ich hab es mal hier eingebaut:


[...]
<script type="text/javascript">
// avoid pink tiles
   OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
   OpenLayers.Util.onImageLoadErrorColor = "transparent";

// Start position for the map (hardcoded here for simplicity)
        var lat=51.1950;

[...]

An der Stelle hat es aber nichts gebracht.

komisch, sollte eigentlich dort richtig sein.

Gruss
walter

:frowning:

Ich hab versucht den Code noch zu verändern, aber bin noch zu keinem Ergebnis gekommen
Hat vielleicht jemand noch eine Idee wie ich diese “404” Tiles transparent machen kann?

Vielen Dank schonmal im Vorraus! :slight_smile:

Hier hab ich noch was gefunden, anscheinend geht der Trick mit OpenLayers.Util.onImageLoadErrorColor seit Version 2.12 nicht mehr… Kannst ja mal mit dem CSS versuchen.

Das klingt super! Noch besser ist es eigentlich dass man sogar ein eigenes “Missing Tile” Bild nehmen kann!
Ich kenn mich bei css nicht sehr gut aus. Ich habs so verstanden dass ich jetzt folgenden Code in eine CSS Datei einfügen soll:


.olImageLoadError {
    display: none !important;
}

und in der HTML Datei dann


.olImageLoadError {
    background-image: url('/path/to/theme/img/my-tile-load-error.png');
    background-repeat: no-repeat;
}

Aber aus alten VB.NET Zeiten würde das kein Sinn für mich ergeben, denn ich rufe ja nirgendwo die CSS Datei auf.
Würde mich echt freuen wenn ihr mir nochmal bei der CSS Sache helfen könntet!

ein RIESIEGES DANKE IM VORRAUS!!! :slight_smile:

So ungefähr:

<html>
<head>
    <title>OSM Local Tiles</title>
    <link rel="stylesheet" href="style.css" type="text/css" />                                            <-- steht schon drin
    <style type="text/css">                                                                                            <-- hier kommen 6 Zeilen dazu kommt dazu
      .olImageLoadError {                                                                                                  
         background-image: url('/path/to/theme/img/my-tile-load-error.png');
         background-repeat: no-repeat;
      }     
    </style>                                                                                                                   
    <!-- bring in the OpenLayers javascript library                                                            <-- das war auch schon vorher da                                                                         
    ......................

oder statt dem eigenen Bild eben dieses “display: none !important;”. Aber eigenes Bild malen finde ich schöner, kannst ja auch ein transparentes 2556x256-Bild nehmen, dann ist es auch unsichtbar.

Danke!!!

Funktioniert Super!

Vielen Dank!

jo, das erklär (mir) einiges. war mir sicher, dass das so mal funktioniert hat.

Gruss
walter

Eine letze Frage hätte ich noch:

Welche OpenLayers Version wird in diesem Beispiel verwendet? (http://wiki.openstreetmap.org/wiki/OpenLayers_Local_Tiles_Example)?

Konnte dem hier keine Infos entnehmen: http://forum.openstreetmap.org/viewtopic.php?id=7572

wegen wget http://www.openlayers.org/api/OpenLayers.js im Example immer die aktuellste - also derzeit wohl 2.13

ist sehr unsauber, da genau solche Release-Abhängigkeiten durchschlagen. Ich hole mir immer exakt die Version, die ich kenne und haben will. wenn das z.B. die 2.12 sein muß, mach


<script type="text/javascript" src="http://openlayers.org/api/2.12/OpenLayers.js"></script>
 
    oder   

wget  http://openlayers.org/api/2.12/OpenLayers.js 

andere Versionen (2.11?) analog

Damit geht man auf Nummer sicher.

Gruss
walter

Ok, vielen Dank!
Hatte die Datei im Editor geöffnet weil ich dachte in der Datei selber, beim Copyright Hinweis würde die Version stehen, aber da stand nichts ausser halt dem Copyright.

Aber hab nicht daran gedacht dass die Version ja im Link steht!

Danke!

Viele Grüße
Alexander

da steht sie in dem Beispiel vom wiki eben nicht.

aber bau doch mal

console.log(OpenLayers.VERSION_NUMBER); oder alert(OpenLayers.VERSION_NUMBER);
ein. dann bist du auf der sicheren Seite.

Gruss
walter

Danke :slight_smile:

Release 2.13.1

Da bin ich nochmal,

Ich möchte unten rechts dass “Permalink” umbennen in “Reload”.
ich hab in der HTMl Datei “Permalink” gefunden, aber wenn ich da es umbenne, ändert sich nichts im Browser.
Ich nehme mal an, das ist, damit man den Copyright nicht entfernt, will ich ja auch (auf keinen fall) nicht.
Aber das “Permalink” scheint auch geschützt zu sein?

Wie kann ich das umbennen?

Keine Ahnung. Wenn ich frei konfigurierbare Permalinks brauche, hole ich mir immer was passendes vom Netzwolf

Mir fällt noch gerade auf, dass OpenLayers im Internet Explorer nicht korrekt angezeigt wird.
Für das “normale” OpenLayers gibt es 2 *.css Dateien. Für meine genutze Variante (mit Offline Nutzung) nur eine.
Ich hab jetzt einfach mal versucht meine *.css Datei durch die von dem normalen zu ersetzen. Das ended dann aber in einer völligen Katastrophe!

Ich finde dass das OpenLayers mit der Offline Nutzung allgemein im Wiki schlecht/umständlich dokumentiert ist im Gegensatz zum normalen OpenLayers.

Könntet ihr vielleicht noch ein letzten Mal helfen bei dem Problem aus dem Zitat und dem aus diesem Postig? :slight_smile:
Bin unglaublich froh über so nette, hilfsbereite Leute wie euch! :slight_smile:

PS:

Im Grunde möchte ich ja nur dass da nicht “Permalink” steht sondern “Reload” :slight_smile: