2012-06-04 9 views
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 Gesamtanzahl der Markierungen zum Z-Index hinzuzufügen.)Ändern Z-Index von Marker in openlayers

Die Markierungen (oder Merkmale) 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.

EDIT:

ich dieses Beispiel gefunden: http://dev.openlayers.org/examples/ordering.html ich nicht wirklich verstehen. 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 Sorte zu einer dynamischen Sorte machen kann.

Antwort

2

Versuchen Sie folgendes:

Zunächst einmal sicher, dass Sie eine OpenLayers.Layer.Vector Schicht verwenden, kein OpenLayers.Layer.Markers Schicht. 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 Markerschicht 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 Sie suchen.

http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Feature/Vector-js.html#OpenLayers.Feature.Vector.OpenLayers.Feature.Vector.style

hinzufügen "Marker" (das ist Vectors), um Ihre Vector-Schicht mit der addFeatures Funktion. Und ignoriere einfach das Argument "Optionen".

http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Layer/Vector-js.html#OpenLayers.Layer.Vector.addFeatures

fand ich, dass die Beispielseite zu, und ich fand es zu 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 "Ebene" der Vektorebene.

marker.style.graphicZIndex = 13; 
layer.redraw(); 
+0

Dies hat nicht funktioniert, aber das tat https://gis.stackexchange.com/a/80574/8280 –