首页 > 解决方案 > 如何在 viewer.search() 方法中指定要搜索的图层?

问题描述

我需要指定需要查找id的层,这样就不会在模型的很多层上进行搜索。我可以添加带有图层名称的参数吗?也许像这样 [attributeName, layerName]?

viewer.search('"' + i['displayValue'] + '"', function(dbIds) {
    getSubset(dbIds, "MEASUREDLENGTH", i['displayValue'], function(propsObj) {
        obj.push({
            type: "LineString",
            properties: propsObj,
            geometry: {
                type: "LineString",
                coordinates: returnShortLine(extractPath(viewer, j)),
            }
        });
    })
}, function(error) {}, ["MEASUREDLENGTH", ???layer???]);

标签: autodesk-forgeautodesk-viewer

解决方案


如果可能,请尝试传入属性名称以查找以按层过滤结果 - search(text, onSuccessCallback, onErrorCallback, attributeNames)

viewer.search(text, onSuccessCallback, onErrorCallback, ['attributeName', 'attributeName' ...])

由于搜索是直接针对属性数据库执行的,因此很难应用过滤器/条件或通过扩展查看器自定义其行为 - 我建议过滤结果(读取它们的属性以识别它们的层等)以实现所需的输出。

或者,您可以直接查询属性 db - 请参见此处此处


推荐阅读