Давайте их рассмотрим. Мы рекомендуем вам поиграть с ними в своем любимом редакторе кода, используя официальный пример TopoJSON, так как это простой пример с как минимум двумя доступными слоями (вы можете добавить их самостоятельно).
1. При создании экземпляра ol.Map
var map = new ol.Map({ layers: [ raster, vector ], target: 'map', view: new ol.View({ center: [0, 0], zoom: 2 }) });
2. Один за другим с помощью метода addLayer
// Add them individually, a loop could work too but would avoid it // as there are better solutions to do the same map.addLayer(raster); map.addLayer(vector);
3. Сложите все слои в одну строку
// Return an ol.Collection and use ol.Collection method `extend` // to add an array of layers at the end map.getLayers().extend([raster, vector]);
4. Добавить слой в определенное место
// Add layer using method from case 2 map.addLayer(raster); // Then, add a layer at a specific position with `insertAt` map.getLayers().insertAt(0, vector);
Почему тот или иной?
Как видите, есть много способов добавить слой на карту.
Вот несколько рекомендаций
- Случай 1: предпочтительнее, если вы знаете, что слои не изменятся и их нужно загружать только в начале.
- Случай 2: рассмотрите разные случаи. Это может быть добавление слоя (-ов) позже, поскольку они не нужны раньше, или разделение кода (представьте структуру JavaScript с компонентом для управления слоями) или ясность (вы предпочитаете строку кода, которая явно «addLayer» вместо «magic» из case 1 при создании экземпляра карты)
- Случай 3: та же цель, что и предыдущий случай 2, просто избегайте бесполезного цикла.
- Случай 4: если вам нужно вставить слой в определенное место. Вы можете попробовать использовать ol.layer.Group, если ваш список слоев становится сложным.
Возможно, мы пропустили некоторые другие методы добавления слоя (-ов), это больше оправданий для использования в конкретном случае? Не стесняйтесь комментировать!