Ich habe ein Problem mit Styling-Funktion bei mouseover. Ich bin in der Lage, ein Event zu bekommen, aber das Ändern des Stils funktioniert einfach nicht. Zur Auswahl tut es das, aber für Hover/Mouseover geht es gar nicht. Kann mir bitte jemand dabei helfen. Hier ist mein Code:Verwendung von Select und Hover-Listener in Openlayers 2 - Hover-Änderungsstil
var map, vectorLayer, wmsLayer, selectControl;
window.onload = function() {
map = new OpenLayers.Map('map');
wmsLayer = new OpenLayers.Layer.WMS("OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0?", {
layers: 'basic'
}, {
'attribution': 'Provided by OSGeo'
}
);
vectorLayer = new OpenLayers.Layer.Vector("My Layer Name", {
styleMap: new OpenLayers.StyleMap({
"default": new OpenLayers.Style({
strokeColor: "#ff0000",
strokeOpacity: .7,
strokeWidth: 1,
fillColor: "#ff0000",
fillOpacity: 0,
'pointRadius': 30
}),
"temporary": new OpenLayers.Style({
strokeColor: "#ffff33",
strokeOpacity: .9,
strokeWidth: 2,
fillColor: "#ffff33",
fillOpacity: .3,
cursor: "pointer",
'pointRadius': 20
}),
"select": new OpenLayers.Style({
strokeColor: "#0033ff",
strokeOpacity: .7,
strokeWidth: 2,
fillColor: "#0033ff",
fillOpacity: 0,
graphicZIndex: 2,
'pointRadius': 10
})
})
});
map.addLayers([wmsLayer, vectorLayer]);
map.zoomToMaxExtent();
vectorLayer.addFeatures([
new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(10, 10)
)
]);
var selectControlClicks = new OpenLayers.Control.SelectFeature(vectorLayer, {
onSelect: function(feature) {
console.log('select: number of selected features: ' + vectorLayer.selectedFeatures.length);
},
onUnselect: function(feature) {
console.log('unselect: number of selected features: ' + vectorLayer.selectedFeatures.length);
}
});
var selectControlHover = new OpenLayers.Control.SelectFeature(vectorLayer, {
hover: true,
highlightOnly: true,
renderIntent: 'temporary',
overFeature: function(feature) {
console.log('hover: number of selected features: ' + vectorLayer.selectedFeatures.length);
},
outFeature: function(feature) {
console.log('hover out: number of selected features: ' + vectorLayer.selectedFeatures.length);
},
});
map.addControl(selectControlHover);
selectControlHover.activate();
map.addControl(selectControlClicks);
selectControlClicks.activate();
}
Vielleicht mein Loch Ansatz falsch ist, vielleicht sollte ich nur ein Select verwenden?
prost
Sie hatten Recht. Problem war mit der Deklaration von Hover-Listenern. Mit Ihrem Ansatz funktioniert es perfekt! Vielen Dank! Ich dachte daran, nur einen Select-Controller zu verwenden, aber es scheint nicht so einfach zu sein, wenn ich sowohl schweben als auch auswählen möchte. Was ich am Ende erreichen möchte, ist: - haben Sie die Möglichkeit, auf Feature klicken - haben Sie eine Möglichkeit, über Feature Hover - haben eine Möglichkeit, ein Feature programmatisch auszuwählen, und um ehrlich zu sein, nur um es auf der Karte ohne auszuwählen Aufruf von merkmalsgelöschten Listenern (nur wenn die Auswahl programmatisch erfolgt ist). Das ist das Loch-Szenario. Danke nochmal für deine Hilfe – pawelforums