Актуализиране на базови карти в OpenLayers 3

Усещам, че OpenLayers 3 не прави разлика между базови карти и други слоеве по начина, по който OpenLayers 2 направи (OL2 Layers имаше isBaseLayer свойство, но не виждам еквивалент в OL3).

Предполагам, че трябва да има някакъв начин да се зададе подреждането при добавяне на слой към карта... нещо като

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

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

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


person sfletche    schedule 01.11.2014    source източник


Отговори (1)


Намерих отговор тук, в блога на Кристофър Дженисън.

Оказва се, че слоевете могат да се добавят към определен индекс със следното:

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

В моя случай, в който заменям базовата карта, която вече е там, трябва първо да премахна basemap1 и след това да добавя basemap2 на нейно място, което мога да направя по следния начин:

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

Хуза

АКТУАЛИЗАЦИЯ:

Благодарение на erilem за предоставянето на по-просто решение, setAt, което просто замества слоя при даден индекс...

map.getLayers().setAt(1, basemap2);
person sfletche    schedule 01.11.2014
comment
Имайте предвид, че можете да използвате map.getLayers().setAt(index, layer), за да замените слой с даден индекс с нов. - person erilem; 06.11.2014