Openlayers 4: Ändern der Zeichenreihenfolge ausgewählter Features

9

Ich habe eine einzelne Vektorschicht in OpenLayers 4 (4.4.1). Die Ebene verfügt über mehrere Features mit LineString Geometrien. Einige der Funktionen überschneiden sich.

Wenn ich auf einen Punkt klicke, an dem sich die Features überlappen, möchte ich nur eines der Features als ausgewählt auswählen. Die anderen sollten später noch zur Auswahl verfügbar sein (durch die Feature-ID in einer separaten UI-Auswahlliste).

Wenn ich auf eine andere Feature-ID (in der separaten UI-Auswahlliste) klicke, sollte dieses Feature als ausgewählt gezeichnet werden, und das zuvor ausgewählte sollte nicht als ausgewählt gezeichnet werden, aber immer noch in der Auswahlliste verfügbar sein.

Dies funktioniert, aber es ist nur das erste (Standard) ausgewählte Feature, das oben zu erscheinen scheint.

Das Bild unten zeigt, dass die Feature-ID 10049 als ausgewählt markiert ist.

Das Bild unten zeigt, dass die Feature-ID 10048 als ausgewählt markiert ist.

Wenn ich irgendwo auf die südlichste Stelle klicke, wo sie sich nicht überschneidet, wird sie oben korrekt ausgewählt.

Um die Funktion zu verfolgen, die visuell ausgewählt werden muss, gibt es eine Variable:

%Vor%

Ich verwende den folgenden selectInteraction Code:

%Vor%

Und ich rufe diese Funktion aus einer dynamisch erstellten Linkliste:

%Vor%

Wie kann ich das mit dem selectedStyle-Set an die Spitze ziehen? Ich habe versucht, dem ausgewähltenStyle einen zIndex hinzuzufügen. Aber es scheint keine Wirkung zu haben.

Hier ist ein JsFiddle: Ссылка . Es gibt einige andere kleinere Probleme mit der Auswahl, aber hoffentlich können Sie das oben beschriebene Verhalten sehen.

    
Tommy 12.10.2017, 12:33
quelle

1 Antwort

4
  

Ich habe eine einzelne Vektorebene ... Die Ebene verfügt über mehrere Features mit LineString-Geometrien. Einige der   Funktionen überschneiden sich.

Ich denke, dass Sie die LineString-Geometrien in separaten Layern haben müssen, damit Sie 'zIndex' verwenden können - Sie würden dies tun, indem Sie 'setZIndex' auf dem betreffenden Layer aufrufen. Auf diese Weise können Sie die Zeichenreihenfolge zur Laufzeit festlegen .

Abgesehen davon, dass die Vektoren in ihrer ursprünglichen Zeichenreihenfolge und kurz vor dem Neuzeichnen angezeigt werden, ist es nicht möglich, ihre Zeichenreihenfolge zu ändern.

    
Fraser 20.10.2017 20:24
quelle

Tags und Links