x

Re: select und select-hover gleichzeitig auf Feature Elemente


Geschrieben von Lamce (Gast) am 05. April 2013 01:52:44: [flux]

Als Antwort auf: select und select-hover gleichzeitig auf Feature Elemente geschrieben von Lamce (Gast) am 04. April 2013 17:09:

maxbe wrote:

Tag und willkommen im Forum,

schau dir mal diese Diskussion an. Ich habs nicht ausprobiert, aber meines Wissens ist der Code von dort in die Nahverkehrskarte gewandert und ist dort zu besichtigen.

Grüße, Max

Ich habe lange versucht diesen Lösungsansatz für meine Zwecke zu nutzen hat jedoch nicht so geklappt. Ein Problem wäre, dass ich aller Marker und Popups inkl. Inhalt per KML lade.

Konnte mir einfach nicht vorstellen, dass es nicht möglich ist von Hover und Select sauber zu unterscheiden. Ich habe mir dieses Beispiel nochmal angeschaut http://openlayers.org/dev/examples/high … ature.html und bin meiner Lösung schon ein stück weiter!

function␣onFeatureOver(evt)␣{
var␣feature␣=␣evt.feature;
if(!feature.popup){
var␣popup␣=␣new␣OpenLayers.Popup.FramedCloud("chicken",
feature.geometry.getBounds().getCenterLonLat(),
new␣OpenLayers.Size(100,100),
"<h2>"+feature.attributes.name␣+␣"</h2>"␣+␣feature.attributes.description,
null,␣true
);
feature.popup␣=␣popup;
map.addPopup(popup);
}
}
function␣onFeatureOut(evt)␣{
var␣feature␣=␣evt.feature;
if(feature.popup)␣{
map.removePopup(feature.popup);
feature.popup.destroy();
delete␣feature.popup;
}
}
function␣onFeatureSelect(feature)␣{
if(feature.popup)␣{
map.removePopup(feature.popup);
feature.popup.destroy();
delete␣feature.popup;
}
//hier␣wird␣ein␣sliding␣window␣erstellt␣welches␣detailierte␣infos␣anzeigt
}
var␣mouseoverfeature␣=␣new␣OpenLayers.Control.SelectFeature(kml,␣{
hover:true,
highlightOnly:␣true,␣//wichtig!
eventListeners:{
featurehighlighted:onFeatureOver,
featureunhighlighted:␣onFeatureOut
}
});
map.addControl(mouseoverfeature);
mouseoverfeature.activate();
var␣mouseselectfeature␣=␣new␣OpenLayers.Control.SelectFeature(kml,␣{
clickout:true,
onSelect:␣onFeatureSelect
});
map.addControl(mouseselectfeature);
mouseselectfeature.activate();

Somit unterscheidet er zumindest schonmal zwischen hover und select. Jedoch erscheint mir etwas Rätselhaft.. Wenn ich den Marker anklicke führt er onFeatureSelect aus. Wenn ich dann nochmal über den selben Marker ein Hover erzeuge, scheint er den onFeatureOut nicht mehr auszuführen und das Popup bleibt angezeigt. Erst wenn man einen anderen Marker anklickt, reagiert das Hover vom 1. Marker wieder normal. Als würde das Event sich reseten.

Noch eine Kleinigkeit. Wie setzt man sauber einen Offset für das FramedCloud? Was das Popup nämlich vom Marker bedeckt reagiert nicht auf das Select, löst man aber sicherlich mit einem offset.