Ändere den Z-Index des Markers in Openlayern

8

Ich habe eine Ebene mit mehreren Markern mit ziemlich großen Symbolen, so dass sie sich überlappen. Über die Liste auf der Seite der Karte können Benutzer eine Markierung auswählen und die Karte wird darauf schwenken (und zoomen). Aber es wird immer noch hinter einigen anderen Herstellern stehen. Wie bekomme ich einen individuellen Macher Z-Index und setze ihn? Ich wäre nützlich, um den höchsten verwendeten Z-Index zu erhalten und nur einen hinzuzufügen. (Eine andere Lösung besteht darin, die Gesamtzahl der Markierungen zum Z-Index hinzuzufügen)

Die Markierungen (oder Features) befinden sich in einem myLib.features-Array. Die Konsole zeigt keine Funktionen vom Z-Indextyp an.

Ich kann dafür kein passendes Beispiel oder eine API-Funktion finden.

BEARBEITEN:

Ich habe dieses Beispiel gefunden: Ссылка Ich verstehe es nicht wirklich. Irgendwie nimmt das erstellte Feature den nächsten Z-Index, der von der Schicht über irgendeinen Symboler gegeben wird. Ich habe keine Ahnung, wie ich diese statische Sortierung zu einer dynamischen Sortierung machen kann.

    
Jeroen 04.06.2012, 14:37
quelle

1 Antwort

2

Versuchen Sie Folgendes:

Stellen Sie zunächst sicher, dass Sie eine OpenLayers.Layer.Vector-Ebene und keine OpenLayers.Layer.Markers-Ebene verwenden. Anscheinend ist der Marker-Layer eine alte Nachricht und die gesamte Neuentwicklung erfolgt in der Vector-Ebene. Es hat mehr Funktionen. (Ich habe einen Haufen Zeit mit der Marker-Schicht selbst verschwendet).

Dann muss jeder Ihrer Marker ein OpenLayers.Feature.Vector-Objekt sein. Der Konstruktor benötigt drei Argumente, von denen der dritte als Stil bezeichnet wird. Im Stil legen Sie die Bildattribute, den Hintergrundschatten, den Mouse-over-Text und den Z-Index fest, der den Eigenschaftsnamen "graphicZIndex" hat. Ich denke, das ist es wonach du suchst.

Ссылка

Fügen Sie Ihrer Vektorebene mit der Funktion addFeatures Ihre "Markierungen" hinzu (die Vektoren sind). Und ignorieren Sie einfach das Argument "Optionen".

Ссылка

Ich habe diese Beispielseite auch gefunden, und ich fand es auch verwirrend. Es wurden alle Stile der Marken im Konstruktor der Vektorebene (als Standardwerte, die verwendet werden sollten, wenn die Markierungsart weggelassen wurde) anstelle des Konstruktors der Markierung gesetzt. Ich denke, es macht mehr Sinn, den Markerstil im Markenkonstruktor zu setzen.

Um den Stil in Echtzeit zu ändern, nehmen Sie einen Ihrer OpenLayers.Feature.Vector Marker, genannt "Marker", und tun dies. Und nennen wir die "Layer" der Vektorebene.

%Vor%     
Magmatic 30.07.2012 16:17
quelle