Давайте их рассмотрим. Мы рекомендуем вам поиграть с ними в своем любимом редакторе кода, используя официальный пример 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, если ваш список слоев становится сложным.

Возможно, мы пропустили некоторые другие методы добавления слоя (-ов), это больше оправданий для использования в конкретном случае? Не стесняйтесь комментировать!