首页 / 浏览问题 / 三维GIS / 问题详情
webgl mvt服务查询后高亮
13EXP 2020年12月15日

你好,webgl,http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#MVT

通过

//修改要素风格
        $("#changeFeatureStyle").on("click", function () {
            // 创建填充临时图层
            var layerSetting = selectLayer;
            var highlightLayerID = selectLayer.id + "_highlight";
            var highlightLayer = highlightLayers[highlightLayerID];
            if (!Cesium.defined(highlightLayer)) {
                var highlightLayerSetting = Cesium.clone(layerSetting, true);
                highlightLayerSetting.id = highlightLayerID;
                if (selectLayer.type == "line") { // 线
                    highlightLayerSetting.paint["line-width"] = 2.0;
                    highlightLayerSetting.paint["line-color"] = "rgba(255,0,0,1.00)";
                } else if (selectLayer.type == "fill") { // 面
                    highlightLayerSetting.paint["fill-color"] = "rgba(255,0,0,1.00)";
                }
                mvtMap.addLayer(highlightLayerSetting);
                // 设置过滤条件,只显示图层中ID=1的要素
                mvtMap.setFilter(highlightLayerSetting.id, ["in", "$id", 1]);

                highlightLayers[highlightLayerID] = true;
            }
        });

1.修改要素风格后只能修改一个级别的样式。怎么可以统一设置每个级别的样式

2. 如果不能设置每个级别的样式。有没有直接设置显示高亮的(鼠标点击的高亮效果),比如查询到 ID = 1的要素高亮

1个回答

统一设置每个级别的样式可以给每个级别设置相同的selectLayer.id,根据selectLayer.id来设置样式

$("#changeLayerStyle").on("click", function () {
                var mapboxStyle = mvtMap.mapboxStyle;
                // 修改颜色
                if (selectLayer) {
                    switch (selectLayer.type) {
                        case "fill":
                            mvtMap.setPaintProperty(selectLayer.id, "fill-color", "rgba(255,0,0,0.8)");
                            break;
                        case "line":
                            mvtMap.setPaintProperty(selectLayer.id, "line-color", "rgba(255,0,0,1.00)");
                            break;
                    }
                }
            }

查询高亮的话可以获取到查询到的要素的信息,通过其中的特征值来设置是否高亮

6,087EXP 2020年12月15日
1.mvtMap.setPaintProperty(selectLayer.id, "fill-color", "rgba(255,0,0,0.8)"); 这个是设置图层所有的要素样式吗? 需求是设置id为1的要素高亮。

2.可以查到具体的要素,设置高亮的方法没有查询到
还有个问题 mvtMap.addLayer(highlightLayerSetting);  后怎么移除这个高亮临时层
...