Страница 1 из 1
OpenLayers: порядок отрисовки слоёв
Добавлено: 17 ноя 2010, 11:17
Denis Rykov
В каком порядке OL отрисовывает слои? Если указать массив слоёв при создании объекта map layers: [layer1,layer2], то у меня получается, что как бы я не менял порядок следования слоёв в массиве, на порядок их рендеринга это никак не влияет.
Re: OpenLayers: порядок отрисовки слоёв
Добавлено: 17 ноя 2010, 11:31
Mavka
Принцип такой: первый зашел - снизу лег.
Код: Выделить всё
map.addLayer(topo_1);
map.addLayer(topo_2);
topo_1 будет лежать ниже topo_2.
При добавлении слоев массивом, я тоже сталкивался с вашей проблемой.
Выход: разбивать на маленькие массивы или - цикл.
Хотя по логике, должно работать как с простым addLayer:
Код: Выделить всё
addLayers: function (layers) {
for (var i=0, len=layers.length; i<len; i++) {
this.addLayer(layers[i]);
}
}
Re: OpenLayers: порядок отрисовки слоёв
Добавлено: 17 ноя 2010, 11:53
Denis Rykov
Спасибо, за ответ, но точно также происходит и при addLayer - порядок ничего не меняет. Замечу, что один слой у меня полигональный, другой - точечный, точки рисуются при этом под полигонами.
Re: OpenLayers: порядок отрисовки слоёв
Добавлено: 17 ноя 2010, 12:11
oxch
Порядок слоев, насколько я знаю, определяется параметром z-index, который можно установить для слоя функцией setZIndex(zIndex).
Если z-index не указывается для слоя, то он назначается последовательно при добавлении нового слоя.
Если вам важен порядок, то задайте z-index на этапе создания слоя, а потом добавляйте слои массивом.
Re: OpenLayers: порядок отрисовки слоёв
Добавлено: 17 ноя 2010, 12:16
Denis Rykov
Это я сразу попробовал - не помогает.
Re: OpenLayers: порядок отрисовки слоёв
Добавлено: 17 ноя 2010, 12:23
Mavka
Труба... У меня addLayer работает в десятке приложений...
И растровые и векторные слои ложатся в заданном порядке.
Не знаю.
Re: OpenLayers: порядок отрисовки слоёв
Добавлено: 17 ноя 2010, 20:44
Denis Rykov
Проблема решена. Дело было в том, что у меня использовался контрол SelectFeature для полигонального слоя и не использовался для точечного. А при использовании этого контрола,все слои, задействованные в нём, помещаются на самый верхний уровень:
For SelectFeature control to work, the svg/vml container needs to be on top of the layer stack. If you configure it with multiple layers, it will create its own container on top of all other layers. If you configure it with a single layer, it will move this layer to the top of the layer stack.