2014-11-01 2 views
0

Мне кажется, что OpenLayers 3 не делает различий между базовыми образцами и другими слоями способом OpenLayers 2 (OL2 Layers имеет isBaseLayer property, но я не вижу эквивалента в OL3).Обновление Basemaps в OpenLayers 3

Я предполагаю, что должен быть какой-то способ, чтобы установить порядок, при добавлении слоя на карте ... что-то вроде

map.addLayer(newBasemap, 1); // where all other layers would have an ordering greater than 1 

Но когда я смотрю на документы все, что я вижу addLayer(layer) какие места новый слой поверх других слоев.

Как я могу обеспечить, чтобы новый (базовая карта) был помещен под другими слоями, а не сверху?

ответ

1

Обнаружили ответ here at Christopher Jennison's Blog.

Оказывается, слои могут быть добавлены в конкретный индекс со следующим:

map.getLayers().insertAt(1, layer); 

В моем случае, в котором я заменить базовую карту, которая уже там мне нужно сначала удалить basemap1, а затем добавить basemap2 в его место, которое я могу сделать так:

map.removeLayer(basemap1); 
map.getLayers().insertAt(1, basemap2); 

возгласы ликования

UPDATE:

Благодаря erilem для обеспечения более простое решение, setAt, который просто заменяет слой по данному индексу ...

map.getLayers().setAt(1, basemap2); 
+1

Обратите внимание, что вы можете использовать 'map.getLayers(). SetAt (индекс, слой) 'заменить слой с заданным индексом на новый. – erilem