ich habe nun eine Karte mit OpenLayers erstellt, in der verschiedene Marker eingezeichnet sind.
wie ist es nun möglich eine Liste dieser Marker an den Rand zu schreiben, sodass ein Klick oder Mousover auf einen Eintrag den Popup am richtigen Marker aufkommen lässt?
Danke
Thomas
So sehen meine Dateien aus:
Die HTML Datei:
nun die noch fehlende Teil addmarker aus tom.js:
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, 70) } );
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);
marker.events.register("mouseover", feature, markerClick);
//marker.events.register("mouseout", feature, markerClick);
layer.addMarker(marker);
map.addPopup(feature.createPopup(feature.closeBox));
Hi, ich habe mir eine Methode jumptoMarker(lat,lon) geschrieben und die wird dann bei klicken auf einen Link an der Seite per onclick Funktion aufgerufen. In der Funktion wir dann ganz normall ein Marker auf der Map erstellt und die Karte zentriert. Die HTML Liste der Marker erstellt mir dabei ein Python Skript.
Einfacher geht es wenn du deine Marker in einem Geo Format ablegst und den Vector Layer nimmst. Der kann die meisten Formate so öffnen und da gibt es so eine Funktion schon fertig (onselect irgendwas…).