2012-06-04 8 views
8

Mam warstwę z wieloma znacznikami z raczej dużymi ikonami, więc nakładają się. Za pomocą listy z boku mapy użytkownicy mogą wybrać znacznik, a mapa będzie się przesuwać (i powiększać) do niego. Ale nadal będzie za innymi twórcami. Jak uzyskać indywidualny indeks zindera i ustawić go? Byłbym przydatny, aby uzyskać najwyższy użyty indeks Z i po prostu go dodać. (innym rozwiązaniem jest dodanie całkowitej liczby markerów do indeksu Z).Zmień indeks zera znaczników w otwartych warstwach

Znaczniki (lub funkcje) znajdują się w tablicy myLib.features. Konsola nie wyświetla żadnych funkcji typu z-index.

Nie mogę znaleźć odpowiedniego przykładu lub funkcji api dla tego.

EDIT:

Znalazłem ten przykład: http://dev.openlayers.org/examples/ordering.html ja naprawdę nie rozumiem. W jakiś sposób utworzona funkcja pobiera następny z-index podany przez warstwę za pomocą symbolu symbolizującego. Nie mam pojęcia, jak zmienić ten statyczny w dynamiczny.

Odpowiedz

2

Spróbuj tego:

Przede wszystkim upewnij się, że używasz warstwę OpenLayers.Layer.Vector, nie warstwą OpenLayers.Layer.Markers. Najwyraźniej warstwa Markerów to stara wiadomość, a wszystkie nowe prace są wykonywane w warstwie Vector. Ma więcej funkcji. (Ja sam zmarnowałem stos czasu z warstwą Markerów).

Następnie każdy ze znaczników musi być obiektem OpenLayers.Feature.Vector. Konstruktor przyjmuje trzy argumenty, z których trzeci nazywa się stylem. Styl polega na ustawianiu atrybutów obrazu, cienia tła, tekstu po najechaniu kursorem myszy i indeksu z, który ma nazwę właściwości "graphicZIndex". Myślę, że tego właśnie szukasz.

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

Dodaj swoje "markery" (co to VECTOR) do warstwy wektorowe z funkcją addFeatures. I po prostu zignoruj ​​argument "opcje".

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

Znalazłem ten przykład zbyt strony i znalazłem to zbyt kłopotliwe. To ustawienie wszystkich stylów znaczników w konstruktorze warstwy wektorowej (jako domyślne wartości, które będą używane, jeśli styl znacznika został pominięty) zamiast konstruktora znacznika. Myślę, że bardziej sensowne jest ustawienie stylu markera w konstruktorze znaczników.

Aby zmienić styl w czasie rzeczywistym, weź jeden ze znaczników OpenLayers.Feature.Vector, o nazwie "marker" i zrób to. I nazwijmy warstwę wektorową "warstwą".

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

To nie działało, ale to działało https://gis.stackexchange.com/a/80574/8280 –