OSM Webseiteneinbindung

Hallo liebe Leuts,
mir wurde hier nun schon einige male echt auf freundliche Art und Weise geholfen wenn ich nicht weiter wusste…
Daher hatte ich gehofft Ihr könntet mich ein weiteres mal vor dem Verzweifeln bewahren :wink: .

Stand der Dinge:
Ich habe mit Hilfe von Open Layers eine OSM auf meine Webseite eingebunden. Alles schön und gut. Nun bin ich gerade dabei eigene Marker zu erstellen bzw. Points of Interest (POI).
Mit dem Befehl addMarker greife ich dabei auf folgende JavaScriptFunktion zu:

//JS Code:
function addMarker(layer, lon, lat, popupContentHTML) {

var ll = new OpenLayers.LonLat(Lon2Merc(lon), Lat2Merc(lat));
var feature = new OpenLayers.Feature(layer, ll);
feature.closeBox = true;
feature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {minSize: new OpenLayers.Size(180, 180) } );
feature.data.popupContentHTML = popupContentHTML;
feature.data.overflow = "hidden";

var marker = new OpenLayers.Marker(ll);
marker.feature = feature;

var markerClick = function(evt) {
    if (this.popup == null) {
        this.popup = this.createPopup(this.closeBox);
        map.addPopup(this.popup);
        this.popup.show();
    } else {
        this.popup.toggle();
    }
    OpenLayers.Event.stop(evt);
};
marker.events.register("mousedown", feature, markerClick);

layer.addMarker(marker);
map.addPopup(feature.createPopup(feature.closeBox));

}

Mein Problem ist nun, dass ich es relativ blöd finde, dass die Popup Texte immer schon beim Öffnen der Seite direkt angezeigt werden.
Scheinbar läuft das über den folgenden Befehl:
//JS CODE:
feature.data.popupContentHTML = popupContentHTML;
//JS CODE ENDE

Wenn ich diesen aber auskommentiere oder in die if-Clause auslagere bekomme ich gar kein Pop Up mehr. Schließlich soll es beim Anklicken schon angezeigt werden.
Außerdem wäre es schön wenn ich die Größe der Box anpassen könnte. Das hat bisher leider nur bedingt geklappt.
//JS CODE
feature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {minSize: new OpenLayers.Size(180, 180) } );

//JS CODE
Der rechte Wert in den Klammern, also das linke 180, bewirkt eine Änderung. Der rechte Wert allerdings leider nicht. Deshalb bin ich mir nicht ganz siche rob es sich hier um länge breite Werte handelt.

Ich hoffe ich konnte Euch ausreichend Informationen zu meinem Code geben.
Vielen Dank bereits im Voraus.
LG
Triceps

Davon leider keine Ahnung aber: Es gibt einen CODE-Tag, pack den Code da rein, dann ist das schöner lesbar :slight_smile:

[.CODE] und [./CODE] ohne dem . natürlich. Ergebnis:

CODE
more Code
even more Code 

Ich hab Dein Beispiel mit meinem verglichen, finde aber keine relevanten Unterschiede… Da muss irgendwo anders das Popup geöffnet werden, weil die Voreinstellung ist meines Erachtens “lass es erst mal zu”. Das “minSize: new OpenLayers.Size(180, 180)” finde ich auch korrekt. Jedenfalls haben bei mir Änderungen an beiden Zahlen Auswirkung und ja, das soll Breite und Höhe sein… Sicher dass das das richtige Stück Programm ist, was du da zeigst?

Übrigens würde ich nichts neues mit OL2 anfangen, nur noch alte Projekte warten…

Grüße
Max

Hi Max,
Danke erstmal für deine Hilfe und die Tipps!
Ja je mehr ich über OL erfahre, desto deutlicher wird mir davon abgeraten…
Dennoch hab ich nun mal jetzt damit angefangen und die Zeit reich leider nicht nochmal etwas anderes einzufügen.
Daher bin ich so starrsinnig was OL angeht und versuche zumindest dabei zu bleiben.

Ja die Änderung bei den Zahlen bewirken bei mir mittlerweile auch etwas. Da muss ich was vertauscht haben. Mein Fehler!

Dennoch ist es leider so, dass die PopUps immer noch offen sind, wenn die Seite neu geladen wird.
Ich kann mir leider nicht herleiten was ich sonst ändern soll. Vielleicht existiert der Code den ich abändern will noch garnicht und muss erst eingefügt werden. Ich bin mir allerdings relativ sicher, dass es im js-Code sein muss.

Ich warte daher geduldig auf jemanden der mir sagen kann, was ich einfügen oder abändern muss, damit das Problem gelöst wird.
Vielen Dank
Triceps

Also wenn ich deinen Code bei mit reinkopiere, gibts erst mal Absturz und wenn ich die Zeile

map.addPopup(feature.createPopup(feature.closeBox));

lösche, funktionierts wie vermutlich gewünscht: http://geo.dianacht.de/tests/popupmitx2.html Ist das nur bei meinem Browser so? Oder nur mit der hier verwendeten Version von OL: 2.9.1

Einzige weitere Änderung ist eine Zeile “var ll = new OpenLayers.LonLat …”, weil ich diese Funktion “Lon2Merc” nicht hab. Daran liegts aber sicher nicht…

Ich hab’ mir den Kommentare beim Lesen Deines Posts erst mal verkniffen - aber Leaflet wäre vermutlich die beste Antwort.

Vielen Dank für die schnelle Hilfe!
Funktioniert jetzt bei mir einwandfrei!
Echt super nett von dir!
LG Triceps

Verstehe nicht warum Sie sich einen Kommentar verkneifen mussten.
Ich bin einfach nicht UptoDate was die Arbeit mit OSM betrifft. Muss mich halt erst einarbeiten.
Die Kommentare auf dieser Webseite waren immer hilfreich. Alle User waren super nett.
Das ist auch der Grund warum ich hier weiter aktiv bleiben will. Vielleicht kann ich ja auch mal jemandem helfen…
Wenn etwas gefragt habe was für Kenner offensichtlich ist, tut mir das natürlich Leid…
oder hat es was mit einer generellen Aussage zu tun?
Verstehe nicht was Sie meinen.
LG Triceps