Ich versuche, eine Maus Hover-Ereignis mit dem folgenden Verfahren aus der offiziellen OL3 Beispiele Seite genommen zu erstellen:Openlayers 3 hasFeatureAtPixel Filter für Schicht
http://openlayers.org/en/latest/examples/earthquake-clusters.html
ich nur die Aktion auszulösen müssen, wenn sie über ein Schweben bestimmte Schicht. Nachdem ich die offizielle Dokumentation konsultiert hatte, entdeckte ich, dass Sie mit hasFeatureAtPixel eine Layer-Filter-Funktion verwenden können, aber es scheint nicht zu funktionieren.
map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
var hit = map.hasFeatureAtPixel(pixel, function(feature, layer) {
console.log(layer);
console.log(feature);
});
});
Die console.log Anrufe führen in Feature-Objekte in der Konsole gegeben werden, aber keine Schicht, Objekte, werden diese als "undefined zurückgegeben. Es sind die Ebenenobjekte, die ich testen muss, ob die Ebene die richtige ist.
Irgendwelche Ideen, warum das nicht funktioniert?
Meine Vektorebenen haben leider keine Namen, ich vergleiche normalerweise Layerobjekte, um die Layer zu identifizieren. Ist nicht das erste Argument in der Layer-Filter-Funktion ein Feature, keine Ebene? Aus diesem Grund habe ich eine console.out-Methode demonstriert, weil ich von der Layer-Filter-Funktion nicht auf die Ebene zugreifen kann, sie erscheint als undefiniert. Ich werde das aber versuchen, danke :) –
Es spielt keine Rolle, wie Sie die Schicht, die Sie wollen, überprüfen, die Frage ist, wie die Schicht Filter implementieren. Siehe aktualisierte Antwort. –
Mein Fehler war die Verwendung eines falschen Beispielcodes, um mein Problem zu lösen. Das Problem war einfach, das Argument in der Filterfunktion ist die Ebene, nicht das Feature, wie Sie gezeigt haben. Problem gelöst. –