Методы OpenLayers Map addLayer и getLayers, работающие с пользовательскими типами слоев - PullRequest
0 голосов
/ 04 августа 2020

Я расширяю классы 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
...