farben

Nahmd und frohe Weihnachten,

Ja. Und zwar so: http://www.netzwolf.info/kartografie/openlayers/olimgpath.htm

Gruß Wolf

Toll!!! Ganz toll! :slight_smile:

Ich hatte schon http://openlayers.org/ runtergeladen und angefangen, die Dateinamen zu ersetzen. Aber deine Variante ist mir natürlich viel lieber! :slight_smile:

Danke!

Kann ich die Position und Größe der Icons auch noch irgendwie beeinflussen?
Ich würde es nämlich gerne so machen, dass die north/west/south/east-Buttons alle schön im Kreis angeordnet sind.

Nahmd,

Dazu müsstest Du die Methode draw() der “Klasse” OpenLayers.Control.PanZoomBar überschreiben.
Möglicherweise geht die Aktivierung des “world-zoom”-Buttons in die gewünschte Richtung: http://www.netzwolf.info/kartografie/openlayers/olimgpath.htm

Die Anordnung sieht wirklich gut aus, ist aber mit den OL-Buttons nicht zu realisieren.

Der Grund ist einfach: die Buttons werden durch

realisiert, und
sind immer rechteckig, auch wenn die eingelagerte Grafik transparent ist. In Deinem Fall würden die vier Buttons sich teilweise verdecken, wodurch der Kartennutzer leicht die falsche Funktion aktiviert. Web-Markting-Fritzen beschreiben das so: “das Kartenerlebnis leidet”.

Dein Design würde man mit einer Schaltfläche und einer Graphik realisieren, um dann bei jedem Klick die Pixelposition abzufragen und abhängig von dieser Position die gewünschte Aktion auslösen. So hast Du völlige Freiheit beim Design.

Gruß Wolf

Moin,

Weil Weihnachten ist: http://www.netzwolf.info/kartografie/openlayers/clickfield.htm

Gruß Wolf

hi,

ich habe nochmal drüber nachgedacht:

farben von grafiken, die als png/gif/…-file benutzt werden, lassen sich natürlich NICHT per css ändern.
nur bei farben, die z.b. als foreground/background/fillarea verwendet werden, geht das manchmal.

es geht aber dennoch - und diese lösung hat noch andere vorteile. ich muss nur etwas abschweifen um das zu erklären:

openlayers ist in java-script geschrieben und wird oft durch


...
<script type="text/javascript" src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
...

in die eigene webseite eingebaut.
das hat den nachteil, dass die eigene seite öfters “klemmt”, weil ol sehr oft down ist.
lädt man sich das ganze ol-zeug vom ol-server runter (http://openlayers.org/download/OpenLayers-2.10.zip) und speichert man es lokal ab, kann man das so implementieren


...
<script type="text/javascript" src="ol/OpenLayers.js"></script>
...

da ist man unabhängig vom ol-server
und jetzt kann man die grafiken, die ja jetzt auch im eigenen ol-bereich liegen, einfach ersetzen.

alle paar monate sollte man dann mal nachsehen, ob es ne neue release gibt (3.0 soll angeblich q1/11 kommen)

gruss
walter

Genau das gleiche hatte ich bereits ein paar Postings früher genannt…

Echt toll! Hätte ich nie geschafft!
Aber ich glaube, dir ist ein Flüchtigkeitsfehler unterlaufen.
Wenn man auf den south-Button klickt, bewegt man sich in Richtung Norden.

P. S. die Grafiken sind mir ganz gut gelungen, oder? :slight_smile: Ich glaube, sie wirken etwas “leichter” und freundlicher als die Standard-Buttons.

Das ist natürlich nicht optimal. Warum ist sie so oft down?

Wenn man meine früheren Postings durchliest, sieht man, dass ich mir in Flash einen eigenen, wirklich sehr, sehr rudimentären Renderer programmiert habe. Leider musste ich diese Entwicklung dann abbrechen, weil ich ständig Connention-Probleme hatte.

Dieses Paket OpenLayers-2.10.zip, das ich runterladen soll, ist 7.5MB groß. Was ist darin enthalten? Sind da auch alle Grafiken drin, die für die Dartellung der Karte benötigt werden? Ist man dann vollkommen unabhängig von anderen Servern?

Wenn eine neue Version rauskommt, was ändert sich dann? Wie schaut das eigentlich mit den Kartenmaterial, also den Grafiken aus? Ich könnte mir vorstellen, dass die alle paar Tage erneuert werden, richtig? Muss man dann wirklich alle paar Tage das Paket neu runterladen?

Mir gefällt es ehrlich gesagt sowieso nicht, wenn ich einen Teil auf meinem Server und einen anderen Teil auf einem anderen Server liegen habe. Werden dort Änderungen vorgenommen, könnte es sicherlich passieren, dass sich diese Änderungen dann nicht mit den lokal installierten Scripts vertragen.

Nahmd,

Das war selbstverständlich kein Fehler, sondern ein bewusst eingebauter Aufmerksamkeitstest!
[×] Du hast den Test bestanden.

.oO( ich fürchte den Tag, an dem mir einmal keine Ausrede einfällt )

Die sehen wirklich gut aus.
Technisch natürlich noch verbesserungsfähig: ich hab das Icon beschnittten, den äußeren Bereich grau gefärbt und dann das Grau transparent gemacht: dadurch ist weißes Gekrissel am Rand der Transparenz übrig geblieben. Viel besser sieht es aus, wenn die Grafik direkt auf transparentem Hintergrund gebaut wird.

Wenn Du noch eine Skala und einen Slider baust, kann ich das Script zu einer voll konfigurierbaren Alternative zur PanZoomBar erweitern :slight_smile:

Das “all in one” OpenLayers.js hat ca. 700k, zusammen mit den Icons und Stylesheet ist man bei ca. 800k.
Darin sind NICHT die Kacheln enthalten!

Zur Größenordnung der Kacheln:
→ Zoomstufe 0: 1Kachel
→ Zoomstufe 1: 4 Kacheln
→ Zoomstufe 2: 16 Kacheln
→ Zoomstufe n: 4^n Kacheln
→ Zoomstufe 10: 1 Million Kacheln
→ Zoomstufe 15: 1 Milliarde Kacheln

Eine Kachel hat um 30k (hängt sehr vom Inhalt ab, blaues Meer ist natürlich viel kleiner), aber selbst mit 1k/Kachel gerechnet braucht bereits die Zoomstufe 15 ein Terabyte Speicher.

Nur wenn der von Dir angezeigte Bereich sehr klein ist, ist das lokale Vorhalten der Kacheln sinnvoll.
Wenn Besucher häufig die gleichen Bereiche anschauen, ist das Caching der Kacheln sinnvoll.

In den meisten Fällen empfiehlt sich der Bezug der Kacheln von einer zentralen Infrastruktur – natürlich bei Beteiligung an den Kosten der Infrastruktur.

Die Kacheln werden neu gebaut, wenn im von der Kachel abgedeckten Bereich sich etwas geändert hat und die Kachel einmal abgerufen wurde (Neubau on demand). Je nach Auslastung der Server hab ich schon 10min nach einer Änderung die aktualisierten Kacheln gehabt.

Nur wenn Du eine der neuen Funktionalitäten brauchst oder wenn ein Bug gefixt wurde, der für Dich von Bedeutung war.

Bei den Kacheln ist das (fast) unvermeidbar.

Da habe ich keine Bedenken, denn die Struktur von OpenLayers ist bereits recht stabil.
Ich benutze für meine normalen Seiten eine lokale Kopie von OL (die auch schon mal ein halbes Jahr hinter dem aktuellen Stand her hinkt); die zum Downloaden bestimmten Seiten benutzen das OL vom OL-Server, damit die Download-Pakete schön klein bleiben.

Gruß Wolf

Danke :slight_smile:

Du kannst die Photoshop-Datei haben, wenn du willst.
Da ist alles mit transparentem Hintergrund.

Die Vermutung hatte ich schon.

Wow! Wahnsinn!

Ist verständlich. Und dann natürlich auch gut so!

Moin,

Danke für das Angebot. Ich lasse aber von Grafik soweit möglich die Finger, u.a. weil ich grünblind bin und deshalb noch nicht einmal Farben auswählen kann. Deshalb bin ich weder in PS noch in den Gimp eingearbeitet.

Gruß Wolf

Ich habe es jetzt ein wenig anders probiert.

Ich habe OpenLayers.js heruntergeladen und auf meinem Server abgespeichert.
Arbeit jetzt also mit meinem lokalen OpenLayers.js.

Die Funktion draw habe ich umgeändert auf:


draw:function(pos)
{
   OpenLayers.Control.prototype.draw.apply(this,arguments);

   var sz  =new OpenLayers.Size(18,18);
   var szWE=new OpenLayers.Size(21,18);
   var szNS=new OpenLayers.Size(18,21);

   var p=new OpenLayers.Pixel(this.position.x,this.position.y);

   this.buttons=[];
   this._addButton("panleft"  ,"west-mini.png"      ,p.add(0 ,12     ),szWE);
   this._addButton("panright" ,"east-mini.png"      ,p.add(21,12     ),szWE);
   this._addButton("panup"    ,"north-mini.png"     ,p.add(12,0      ),szNS);
   this._addButton("pandown"  ,"south-mini.png"     ,p.add(12,21     ),szNS);
   this._addButton("zoomin"   ,"zoom-plus-mini.png" ,p.add(12,50     ),sz);
   this._addButton("zoomworld","zoom-world-mini.png",p.add(12,50+18  ),sz);
   this._addButton("zoomout"  ,"zoom-minus-mini.png",p.add(12,50+18*2),sz);

   return this.div;
},

Funktioniert wunderbar.

Allerdings habe ich nun den Link auf OpenStreetMap nicht mehr rechts unten, sondern links oben in der Map stehen:

Ich glaube nicht, dass es etwas damit zu tun hat, dass ich die Funktion draw geändert habe. Ich glaube, es liegt daran, dass ich mir das OpenLayers heruntergeladen habe und lokal darauf zugreife.

Ich hätte diesen Link gerne wieder rechts unten stehen. Wie kann man denn das ändern?

stiimt :frowning: hab ich glatt übersehen.

hätte deedee3 allerdings “unseren” vorschlag realisiert, würde er sich jetzt nicht mit den folgeproblemen rumschlagen :wink:
gruss
walter

Ich habe jetzt doch die Variante vom rurseekatze genommen, oder?

bin ich mir nicht ganz so sicher: wir beide haben gesagt “ol lokal installieren und images austauschen”.
dafür war/ist keinerlei änderung am source-code notwendig.

gruss
walter

Wie wambacher schon sagte war auch in meiner Lösung kein Ändern des Sourcecodes notwendig.
Deine Lösung ist aber in sofern ähnlich, dass du auch Openlayers lokal gespeichert hast. Es würde aber einfacher funktionieren ohne Änderung am Sourcecode, indem du einfach im img Verzeichnis die Grafiken austauschst.

Dürfte ich wissen, wie du dein OLM zusammengebaut hast? Gibt es irgendwo eine Anleitung, wie man eine customized Blibliothek erstellt?

Wyo

Du lädst dir das komplette Openlayers Paket herunter: http://openlayers.org/download/OpenLayers-2.10.tar.gz

Im Verzeichnis build findest du mehrere .cfg Dateien. Du kopierst dir eine davon, bennenst sie irgendwie um und passt dann die Datei an, ähnlich wie die anderen Dateien. Unter include und exclude kannst du einzelne Klassen ausschließen. Wenn ich das richtig verstanden habe brauchst du nur unter exclude die nicht einzubindenen Klassen anzugeben, der Rest wird automatisch eingebaut.

Mit “build.py ” erstellst du dir dann diese Openlayers.js.

soweit ich die sache verstanden habe, erstellt man sich so eine angepasste, kleinere version von ol her, in dem nur das drin ist, was aktuell benötigt wird.
ziel: reduzierung der ladezeiten

das halte ich inzwischen nicht mehr für sinnvoll:
a) viele anwender haben schnelle leitungen
b) der ol-teil ist minimal im vergleich zu den anderen daten (z.b.tiles)
c) scripte werden auch in den broweser-cache geladen
d) höchsten akzeptabel - für den entwickler- wenn die seite absolut fertig ist. sonst fehlt auf einmal was und man muss eine neue version generieren.

viel aufwand - wenig nutzen. es sei denn, man macht erhebliche modifikationen und möchte sich nicht mit eigenen classes rumschlagen.

gruss
walter

Es muss jeder Entwickler selbst entscheiden, ob das sinnvoll ist und ob sich der Aufwand lohnt. In OLM hab ich das so gemacht, Vorteil ist, dass man unabhängig vom Openlayers-Server ist (generell wenn man es lokal macht) und dass die Ladezeit teilweise bei geleertem Cache nur noch die Hälfte beträgt.