thho
December 28, 2011, 12:02pm
#1
Hi,
ich hab hier aus dem Forum folgenden Code um ein Popup auf einem Marker zu erstellen:
feature = new OpenLayers.Feature(markers, new OpenLayers.LonLat(lon, lat).transform(epsg4326,map.getProjectionObject()));
feature.closeBox = true;
feature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {
'autoSize': true,
'maxSize': new OpenLayers.Size(300,200)
});
//Popup Content
feature.data.popupContentHTML = "<p>test<p>";
feature.data.overflow = "auto";
//feature.marker.icon = new OpenLayers.Icon("marker.png");
marker = feature.createMarker();
markerClick = function (evt) {
if (this.popup == null) {
this.popup = this.createPopup(this.closeBox);
map.addPopup(this.popup);
this.popup.show();
} else {
this.popup.toggle();
}
currentPopup = this.popup;
OpenLayers.Event.stop(evt);
};
marker.events.register("mousedown", feature, markerClick);
markers.addMarker(marker);
map.setCenter(new OpenLayers.LonLat(lon, lat).transform(epsg4326,map.getProjectionObject()),18);
feature.popup = feature.createPopup(feature.closeBox);
map.addPopup(feature.popup);
feature.popup.hide();
Jetzt erscheint der Standard Marker und die Popup Funktion geht.
Sobald ich das Icon mit
ändere, erscheint zwar das neue Icon aber kein Popup mehr. Beim debuggen sehe ich, dass die markerClick Funktion gar nicht aufgerufen wird.
Kann mir jemand helfen?
maxbe
(Max)
December 28, 2011, 12:16pm
#2
Mach mal feature zu ner globalen Variable… Ich seh nicht, wo du Dein Icon änderst. Aber ich vermute dass das in einer anderen Funktion passiert und Du das alte feature mit einem neuen gleichnamigen feature (mit neuem Icon aber ohne event) überschreibst.
thho
December 28, 2011, 12:38pm
#3
Hab oben nochmal was geändert, weil ich den falschen Quellcode kopiert hatte…
maxbe
(Max)
December 28, 2011, 12:52pm
#4
Sollte das nicht “feature.data .icon = new OpenLayers.Icon…” heissen? So interpretiere ich zumindest die Gebrauchsanweisung …
thho
December 28, 2011, 12:54pm
#5
JAAAAAA!!! das wars, Vielen Dank!!!