Получение LayerGroup, к которой принадлежит слой, с помощью OpenLayers - PullRequest
0 голосов
/ 06 августа 2020

У меня на карте довольно много слоев плитки, и все они организованы в разные группы (иногда даже вложены).

Я вижу в API getLayer() метод для извлечения слоя, к которому принадлежит вектор, и getLayerGroup() для извлечения всех групп, связанных с картой.

Однако я не смог найти ничего при получении layerGroup a слой связан с.

Допустим, у меня такая ситуация:

var myGroup = new LayerGroup();
var myLayer = new TileLayer();
myGroup.getLayers().insertAt(0, myLayer);

Есть ли способ получить myGroup из myLayer?

1 Ответ

1 голос
/ 06 августа 2020

Чтобы получить родительскую группу слоя, необходимо написать свою собственную функцию поиска, например,

function searchGroups(group, layer) {
  var result;
  var layers = group.getLayers().getArray();
  for (var i = 0; i < layer.length; i++) {
    if (layers[i] === layer) {
      result = group;
    } else if (layers[i] instanceof LayerGroup) {
      result = searchGroup(layers[i], layer)
    }
    if (result) {
      break;
    }
  }
  return result;
}

, затем вызвать

var myGroup = searchGroups(map.getLayerGroup(), mylayer);

Функция getLayers(), которую вы только связали работает для выбранного взаимодействия, вы не можете определить по случайному объекту, к какому слою он принадлежит (а он может быть более чем в одном) без аналогичного поиска объектов в каждом источнике векторного слоя.

...