Я расширяю классы LayerGroup
и TileLayer
, чтобы включить свойство id
, которое мне нужно для идентификации определенного c слоя / группы слоев (это также отражает идентификатор слоя DIV в DOM).
Пример для TileLayer
:
export class OperationalLayer extends TileLayer {
id: String;
constructor(url: string, name: string, id: string) {
const source = new TileWMS({
params: {'LAYERS': name},
url: url,
});
super({source: source});
this.id = id;
}
}
У меня также есть другой класс, который расширяет ol Map
class.
Я бы хотел каким-то образом иметь в этом расширенном классе Map метод getLayers()
, который должен возвращать мои настроенные (расширенные) слои с их информацией id
, а не по умолчанию BaseLayer
с OpenLayers.
Я не могу найти способ сделать это. Я взглянул на исходный код методов addLayer()
и getLayers()
, и они имеют дело со слоями типа BaseLayer
, поэтому я думаю, мне нужно настроить их методы (перегружая их?), но я не совсем уверен, что это правильный путь.
По сути, моей конечной целью было бы получить мои настроенные идентификаторы слоев следующим образом:
// here getLayers() should now return my customized layer type
myCustomizedMap.getLayers().forEach(customLyr => console.log(customLyr.id)) // MY ID PROPERTY HERE