Mehr

Verwenden von OpenLayers 3 forEachFeatureAtPixel zum Angeben der Ebene?


Ich muss zunächst feststellen, dass meine Kenntnisse in Javascript ungefähr den gleichen wie in Spanisch sind. Ich weiß kaum genug, um mich in Schwierigkeiten zu bringen, und dann suche ich Hilfe. Jedenfalls habe ich eine Anwendung, die ein paar geoJSON-Layer enthält. Ich habe eine map.forEachFeatureAtPixel-Funktion erstellt, um ein Div mit einigen Informationen zu aktualisieren.

Das Problem ist, dass es sich alle Schichten ansieht und ich möchte, dass es nur eine betrachtet. Auf diese Weise kann ich eine andere Funktion erstellen, um verschiedene Attribute aus einer anderen Ebene zu erhalten. Ich habe die Dokumentation durchgesehen und sehe die Option opt_layerFilter, aber ich weiß nicht, wie ich sie anwenden soll (aufgrund meines Mangels an Javascript-Kenntnissen). Wenn mir hier jemand einen Hinweis geben könnte, kann ich hoffentlich die Dokumentation lesen und aufhören, diese Fragen zu stellen.

Funktion:

var displayFeatureInfo = function(pixel) { var feature = map.forEachFeatureAtPixel(pixel, function(feature, layer) { return feature;}); var info = document.getElementById('info'); if (Funktion) { info.innerHTML = '

' + feature.get('Name') + '

' + '
API:
' + feature.get('API') + '
' + '
Status:
' + feature.get('Status') + '
' + '
Rechtliches :
' + feature.get('Legal') + '
' + '
Site-Name:
' + feature.get('Site_Name') + '
'+''; } sonst { info.innerHTML = ' '; } if (Feature !== Highlight) { if (Highlight) { featureOverlay.removeFeature (Highlight); } if (Feature) { featureOverlay.addFeature (Feature); } Hervorhebung = Funktion; } };

Du kannst den ... benutzenopt_layerFilterArgument zuforEachFeatureAtPixel. Siehe die Dokumentation unter http://openlayers.org/en/master/apidoc/ol.Map.html#forEachFeatureAtPixel.

Zum Beispiel, wennVektorSchichtLaist ein Verweis auf den Layer, in dem Sie Features erkennen möchten, die Sie wie folgt verwenden:

var feature = map.forEachFeatureAtPixel(pixel, function(feature, layer) { return feature; }, null, function(layer) { return layer === vectorLayer; });

Mit dieser "Filterfunktion" Schichten, die nichtVektorSchichtLawird herausgefiltert.


Schau das Video: Angular-Openlayers Part 4: Working with simple popup (Oktober 2021).