Изменить z-index маркера в открытых слоях

У меня есть слой с несколькими маркерами и довольно большими значками, поэтому они перекрываются. С помощью списка сбоку карты пользователи могут выбрать маркер, и карта будет перемещаться (и масштабироваться) к нему. Но он все равно будет позади некоторых других производителей. Как мне получить z-index отдельных производителей и установить его? Было бы полезно получить наиболее часто используемый z-индекс и просто добавить его. (другое решение - добавить общее количество маркеров к z-индексу)

Маркеры (или функции) находятся в массиве myLib.features. Консоль не отображает никаких функций типа z-index.

Я не могу найти для этого подходящий пример или функцию api.

РЕДАКТИРОВАТЬ:

Я нашел этот пример: http://dev.openlayers.org/examples/ordering.html Я не очень понимаю. Каким-то образом созданный объект принимает следующий z-индекс, заданный слоем через какой-то символизатор. Я понятия не имею, как превратить эту статическую сортировку в динамическую.


person Jeroen    schedule 04.06.2012    source источник


Ответы (1)


Попробуй это:

Прежде всего убедитесь, что вы используете слой OpenLayers.Layer.Vector, а не слой OpenLayers.Layer.Markers. Очевидно, слой Markers - это старые новости, и все новые разработки выполняются в слое Vector. У него больше возможностей. (Я сам потратил кучу времени на слой Markers).

Затем каждый из ваших маркеров должен быть объектом OpenLayers.Feature.Vector. Конструктор принимает три аргумента, третий из которых называется стилем. Стиль - это то место, где вы устанавливаете атрибуты изображения, тень фона, текст при наведении указателя мыши и z-индекс, который имеет имя свойства «graphicZIndex». Я думаю, это то, что вы ищете.

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

Добавьте свои «маркеры» (которые являются векторными) на свой векторный слой с помощью функции addFeatures. И просто проигнорируйте аргумент "варианты".

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

Я тоже нашел эту страницу с примером, и это тоже меня сбило с толку. Он устанавливал все стили маркеров в конструкторе векторного слоя (как значения по умолчанию, которые будут использоваться, если стиль маркера был опущен) вместо конструктора маркера. Думаю, имеет смысл установить стиль маркера в конструкторе маркера.

Чтобы изменить стиль в реальном времени, возьмите один из ваших маркеров OpenLayers.Feature.Vector, который называется «маркер», и сделайте это. И давайте назовем векторный слой «слоем».

marker.style.graphicZIndex = 13;
layer.redraw();
person Magmatic    schedule 30.07.2012
comment
Это не сработало, но это сработало gis.stackexchange.com/a/80574/8280 - person Matthew Lock; 24.01.2018