Hallo! Ich habe heute einige Stunden damit verbracht, folgende Probleme zu lösen, leider ohne Erfolg. Ich möchte erstens einen Marker setzen, die Grafik soll aber von mir stammen. Ausgangspunkt ist folgender Code, den ich aus dem OSM-wiki von DE_layers habe:
layer_markers = new OpenLayers.Layer.Markers("Address", { projection: new OpenLayers.Projection("EPSG:4326"),visibility: true, displayInLayerSwitcher: false }); map.addLayer(layer_markers); layer_markers.setVisibility(true); addMarker(layer_markers, lon, lat, popuptext); 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(200, 120) } ); 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); }
Hier klappt auch alles mit dem Setzen des Markers, wenn ich diesen anklicke, erscheint auch der Infotext zum Marker. Nun würde ich hier gern irgendwie eine eigene Marker-Grafik einbinden. Dazu habe ich aber keinen Ansatzpunkt gefunden. Und zweitens wollte ich gern noch, dass der Infotext nicht in einem “FramedCloud” erscheint, sondern in einem “AnchoredBubble”. Das habe ich durch folgenden Code auch hinbekommen:
feature.popupClass = OpenLayers.Class(OpenLayers.Popup.AnchoredBubble);
Wo ich dann verzweifelt bin, war, die Größe des Bubbles zu ändern. So wie ich http://dev.openlayers.org/docs/files/OpenLayers/Popup/AnchoredBubble-js.html verstanden habe, hätte das auf irgendeine Art und Weise mit
var size = new OpenLayers.Size(100,17); XXXXX.setSize(size);
gehen müssen. Ich habe für XXXXX alles ausprobiert, ich habe es nicht hinbekommen,. Egal ob - feature.setSize(size); - feature.popupClass…setSize(size); - ll.setSize(size); - OpenLayers.Popup.AnchoredBubble.setSize(size); - AnchoredBubble.setSize(size); nichts davon funktioniert. Kann mir evtl. jemand zu den beiden Sachen einen Tipp geben? Vielen Dank Andi