Forge viewer isLayerVisible всегда ложно

По какой-то причине я всегда получаю false на viewer.isLayerVisible (layerNode). Я следил за этим руководством https://forge.autodesk.com/blog/toggle-sheet-layer-visibility У меня есть обработчик событий на LAYER_VISIBILITY_CHANGED_EVENT, вот мой фрагмент кода в машинописном тексте:

viewer.addEventListener(Autodesk.Viewing.LAYER_VISIBILITY_CHANGED_EVENT, (e) => {
var root = viewer.model["myData"].layersRoot; //getLayersRoot() is not a function for some reason
var overlayLayer = viewer["getSelectedLayer"]();
if (viewer["layerRoot"] != undefined) {
    var layerNode = root.children.filter((e) => { return e.name === overlayLayer })
    var isLayerVisible = viewer.isLayerVisible(layerNode);
    //show layer
    if (isLayerVisible) {
        viewer.impl.addOverlay("Edit2D", viewer["savedPoints"].overlayLayer)
    }
    //hide layer
    else {
        viewer.impl.removeOverlayScene("Edit2D")
    }
}

});

После отключения некоторых слоев из диспетчера слоев я также получаю viewer.areAllVisible () как true.

Версия программы просмотра Forge - 7. *

У тебя есть какой-нибудь совет? Спасибо!


person Zoner    schedule 25.09.2020    source источник


Ответы (1)


Я обнаружил, что вы можете получить доступ к видимым и видимым слоям из свойства просмотра indexToLayer.

   var visibleLayers = Array.from(viewer.impl.layers.indexToLayer.filter(e => e != null && e.visible));
person Zoner    schedule 08.10.2020