Breite und Höhe einer FramedCloud sind immer 200px, egal was ich mache

Hi *,

ich habe auf meiner Map ein paar Popups, deren HTML Inhalt aber mehr als 200 Pixel in der Breite benötigt.

Leider bekomme ich die Popups aber in der Größe nicht geändert.

Hier mein Ansatz:

function addMarker(layer, lon, lat, popupContentHTML)
{
var ll = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection(“EPSG:4326”), map.getProjectionObject());
var feature = new OpenLayers.Feature(layer, ll);
feature.closeBox = true;
feature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {
“autoSize”: true,
“minSize”: new OpenLayers.Size(300, 400),
“maxSize”: new OpenLayers.Size(500, 500),
“keepInMap”: true
});
feature.data.popupContentHTML = popupContentHTML;

usw.

Es bleiben immer 200 x 200 Pixel, egal was ich an den Parameter für die FramedCloud ändere.

Hoffentlich hat jemand eine Idee, ich verzweifel gerade.

Nahmd,

Gegen die Verzweiflung: die Defaultgrößen für Popups sind in den Variablen OpenLayers.Popup.WIDTH und OpenLayers.Popup.HEIGHT gespeichert. Vor dem Erzeugen des Popups einfach:


OpenLayers.Popup.WIDTH = 400;
OpenLayers.Popup.HEIGHT = 300;

Das ist aber eine rein symptomatische Behandlung und keine Therapie.

Gruß Wolf

Das funktioniert leider auch nicht. Es bleibt bei 200px. :frowning:

Edith sagt: Jetzt doch. :slight_smile: Wie du schon geschrieben hattest ist das Problem nicht behoben, aber erstmal umschifft. Besten Dank!

Jetzt würde ich nur noch ein Schließen Button in den Popups benötigen. Bekomme ich das auch einfach hin? Bisher gehts es nur, indem ich auf das Symbol auf der Karte klicke und somit ein toggle auslöse:

quelltext so wie oben und dann in etwa:

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);

Wie würde ich das dazu bringen, dass ich einen Button bekomme, mit dem ich das PopUp schließen kann?

Moins,

Hast Du verifiziert, dass “this.closeBox” den Wert “true” hat?
Wenn nicht, tausche das einmal aus:

this.popup = this.createPopup(true);

Wenn auch das nichts ändert, stelle ein möglichst einfaches Beispiel online, damit der Pathologe sich das mal anschauen kann.

Gruß Wolf

hi marc,

da du gerade erst mit ol angefangen hast, ein kleiner tip.

versuche bitte , deine sachen auf OpenLayers.Layer.Vector umzustellen.

das vector-verfahren ist die aktuell am besten von ol unterstützte methode.
viele sachen sind veraltet und werden von den ol-entwicklern nicht mehr verbessert.
das gilt auch für markers.

leider existieren noch viele beispiele mit den alten methoden.
langfristig fährt man mit vectors besser.
vector ist quasi die obermenge von allem. mit vector geht alles was auch z.b. mit markers gemacht wird ( oder auch nicht :wink:

gruss
walter