OpenLayers - Hinttext setzen

Ihr seid ja so nett zu den Anfängern! Die Attributierung hab ich geerbt von MapTiler. Möcht ich gern noch relativieren. Danke für den Hinweis.
Den Rest muss ich erst noch verdauen.
Gruss
Reinhard

Wie lautet doch der Spruch: “Einzeln sind wir stark - gemeinsam sind wir unausstehlich” :wink:

Guten Verdauungsschlaf und Gruss
Walter

Moins,

gleich als Erstes: meine Kommentare von heute Nachmittag waren ernst und nicht böse gemeint:

(1) “Layer.Text” vs. “Format.Text” ist keine Wortklauberei: denn einige Forianer brechen beim Lesen von “Layer.Text” gleich ab und blättern weiter, während sie bei Layer.Vector eher genauer hingucken würden. Deshalb hatte ich auf den Unterschied hingewiesen. Mich hatte nämlich gewundert, warum es noch keine Antworten gab, deshalb hatte ich in Deine Seite geschaut und da das Layer.Layout gefunden.

(2) Wir können nicht immer jede Frage von jetzt auf gleich beantworten. Deshalb hatte ich auf eine Diskussion verwiesen, in der das Thema bereits einmal behandelt wurde. Und auch der Verweis auf den damaligen Fragesteller war ernst gemeint, denn der nutzt die damals erarbeitete Lösung und würde sicher per Mail Dir weiterhelfen. Außerdem schuldet er mir noch eine Tüte Gummibären – die könnte er so abarbeiten. :wink:

Das ist leider unmöglich. Ein Fehler in der OpenLayer.js-Bibliothek führt dazu, dass man nur entweder Popups oder Mouseover haben kann, aber nicht beide. Schade. :frowning:

Kurzfassung: Ja. :sunglasses:

Langfassung: der oben beschriebenen Fehler wird mit einem Patch für OpenLayers.js behoben. Der Tooltip beim Mouseover wird über die (sehr leistungsfähige) StyleMap erzeugt, das Popup über das SelectFeature. Wichtig beim Erzeugen des SelectFeature sind die Optionen: “hover” wird nicht auf true gesetzt, sondern auf einen einen Wert, der zu true evaluiert wird, also ein String mit Länge ab 1 oder eine Zahl ungleich 0; “highlightOnly=true” verhindert, dass bereits beim Mouseover das Popup erscheint.

Du kannst also den Patch einbinden, das SelectFeature mit den speziellen Parametern aufrufen, und dann eine StyleMap erstellen, die in der gewünschten Weise auf das Mouseover reagiert.

Und schon wieder schuldet mir jemand eine Tüte Gummibärchen. :slight_smile:

Gruß Wolf

Hallo,

beim SelectFeature kann man die beiden Callbacks over and out implementieren, die immer dann aufgerufen werden, wenn man mit der Maus über ein Objekt wandert.
Hier mal ein Beispiel mit Text im Tooltip und detailliertem Popup beim Mausklick: http://osm.misterboo.de/education/?zoom=15&lat=49.24&lon=6.99&layers=00BTFT

Gruß,
mmd

Hallo Walter, Wolf, mmd,
habt vielen Dank. So macht es Spaß und motiviert. Die Reaktion auf “so nem alten Kram” hab ich sicherlich verdient und die Gummibärchen (Großpackung) spendiere ich gerne.

  1. Mein Fehler: ich probier immer erst mal IE 6-9 und da läuft garnichts. Eure tollen Beispiele funktionieren ganz toll in FireFox, Safari, Opera u.a. Für die Kunden meiner ehrenamtlichen Seite müsste ich wahrscheinlich mal eine entsprechende Meldung einbauen.
  2. Weitere Erfolgsmeldungen werden noch Zeit brauchen, da ich mit dem wirklichen Leben schwer beansprucht bin. Ich hab aber das Gefühl, dass ich die Methodik verstehe und mit copy und paste weiterkomme.
  3. Wo mach ich mich schlau zum Thema Einbinden eines Patches? Sorry, mal wieder 'ne Anfängerfrage!

Gruß
Reinhard

Nahmd,

Nene, das soll alles auch mit IE (außer uralt) laufen. Wenn nicht, dann bitte in die Fehlerkosole schauen und den Fehler mitteilen.

Per laden genau wie das OpenLayers.js und OpenStreetMap.js.

Ein Patch ist aber immer gefährlich, weil bei einem Update von OpenLayers.js er möglicherweise nicht mehr funktioniert und dann Deine Seite ausfällt.

Deshalb ist, wenn Du nur einen Tooltip und kein sonstiges “Highlighting” (wie bei mir der Unfug mit dem Austausch des Icons) brauchst, die von mmd vorgestellte Lösung besser. Ich habe die auf den Kern eingedampft und als Beispielseite bereitgestellt.

Gruß Wolf

Edit: Beispielseite

Hallo,
schlagmichtot! Auf zwei verschiedenen PC mit IE 8 bzw. IE 9 läuft es nicht. Keine Fehlermeldung. Kein Hoover. Das Beispiel von mmd führt lediglich zum Ruckeln des Bildes insgesamt.

Gruß Reinhard

Moins,

Das ist grob ungehörig.

Ich lassen meinen HTML/JS-Kompatibilitäts-Guru mal drüberschauen. Das kann aber ein paar Tage dauern.

Gruß Wolf

Details zum Fehler auf der Webseite

Benutzer-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; chromeframe/25.0.1364.97; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.21022; .NET CLR 3.5.30729)
Zeitstempel: Mon, 25 Feb 2013 08:03:57 UTC

Meldung: ‘this.padding.left’ ist Null oder kein Objekt
Zeile: 563
Zeichen: 93
Code: 0
URI: http://osm.misterboo.de/education/js/OpenLayers.js

Für den IE kann ich das besteätigen. Chrome und FF einwandfrei.

Nahmd,

Danke, sehr hilfreich.

So es ausschaut ein Fehler in OpenLayers (fehlendes “if (this.padding) {”), den FF&Co gnädig verzeihen. Tritt nur dann auf, wenn man sich die korrekte Größe für ein Popup berechnen lässt, nicht nei Verwendung der (gruseligen) Standardgröße.

Gruß Wolf

Edit: Fehldiagnose “OpenLayers fehlerhaft” korrigiert.

Moins,

Kannst Du bitte auch diese Seite testen? Vorsicht: die wirft Alerts!

Bei einem Mouseover sollten vier Alerts geworfen werden:


fixPadding(this.padding=0, condition=true)
fixPadding(this.padding=0,0,0,0)
fixPadding(this.padding=0,0,0,0, condition=false)
fixPadding(this.padding=0,0,0,0)

Ich bin gespannt, was der IE da anzeigt bzw. ob der in dieser Sequenz stirbt.

Dank+Gruß Wolf

Die sollte bei einem

Angezeigt werden die vier Gipfel wie in FF. Bei mouseover kommen deine 4 allerts (nacheinander mit Bestätigungsabfrage). bestätige ich alle 4 mit “Enter” wird auch Gipfelname angezeigt (solange die Maus nicht bewegt wird) Nach Doppelklick auf POI und 4xBestätigungen wird Name mit Höhe und Deutschland angezeigt.

Ist aber hier auch in FF so.

Bei mir (IE9) ist es ähnlich. Nur ist das Tooltip in IE nicht lesbar, da durch Scrollbalken verstümmelt
(Zoom=139%).

Chris

Nahmd,

Das heißt, die Seite funktioniert mit IE?

Und was ist mit dieser (ohne Alerts)?

Gruß Wolf

Im IE7 funktionieren beide Seiten und alle Funktionen (Popup + ggf. Alerts). Jedoch gibt es im IE kein Möglichkeit, die Alerts zu deaktivieren (das Häkchenfeld fehlt). Tooltip ist lesbar :slight_smile:

Moins,

Dann tritt der von gery-oc beobachtete Fehler nur auf http://osm.misterboo.de/education/ auf?

Hmpf! Wie soll man denn sowas verstehen?

Gruß Wolf

Bei mir funzt die edu-Seite in IE9.

Nahmd,

Bei zweien geht sie nicht, bei einem geht sie, beim FF sowieso.
Ich verstehe gar nichts mehr :roll_eyes: :confused:

Jetzt warte ich doch auf meinen Guru, der hat diverse IEs in mehreren virtuellen Maschinen auf einer Kiste. Da bekomme ich dann eine Übersicht über Verhalten in den IEs.

Gruß Wolf

Details zum Fehler auf der Webseite

Benutzer-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; chromeframe/25.0.1364.97; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.30729; .NET CLR 3.5.21022; .NET CLR 3.5.30729)
Zeitstempel: Mon, 25 Feb 2013 13:52:04 UTC


Meldung: Bezeichner, Zeichenfolge oder Zahl erwartet
Zeile: 209
Zeichen: 5
Code: 0
URI: http://osm.misterboo.de/education/js/map.js

Vielleicht hilft das. In der Kompatibilitätsansicht IE 8 ist die “Karte leer” - siehe Fehlermeldung.

Edit:
Was bedeutet das in script:

Ein überzähliges “,” am Ende eines Hashes. Also “{a:‘b’,c:‘d’,e:‘f’,}”. In PHP, PERL, JAVA erlaubt, in JavaScript nicht. Dem FF ist das völlig egal, der IE wirft (korrekt, so ich annehme) einen Fehler und bricht die Bearbeitung ab.

Wenn Karte in FF läuft, der IE aber gar nichts anzeigt, ist das ein häufiger Grund.

Das “map.js” enthält drei solch überzählige “,". Falls der Ersteller mitliest: Zeilen 209, 243, 280.

Gruß Wolf