首页 / 浏览问题 / 三维GIS / 问题详情
三维场景中如何实现高亮显示
204EXP 2016年11月23日

在三维场景中,我用点击一个建筑物,然后这个建筑物进行高亮显示,最好自己可以调节颜色。

我自己写了实现代码但是没有成功,希望能帮我解决下。

我的代码:

var selection3Ds = scene.findSelection3Ds(true);
if (selection3Ds.length === 0) {
    alert("没有对象被选中。");
    return;
}
if (selection3Ds !== null) {
    var id = selection3Ds[0].get_item(0);
    selection3Ds[0].removeAll();
    var feature3D = layer.findFeature3DByID(id);

    // feature3D.set_isVisible(false);
    style3D.set_markerColor(new SuperMap.Web.Core.Color(255, 0, 255, 225));
    style3D.set_markerScale(5);
    feature3D.set_style3D(style3D);


} else {
    alert("没有对象被选中。");
}

1个回答

你好,请参考:

/* ---------------------------------------- */
/* 清除选择集.                              */
/* ---------------------------------------- */
for (var i = 0; i < sceneControl.get_scene().get_layer3Ds().get_count(); i++)
{
    sceneControl.get_scene().get_layer3Ds().get_item(i).get_selection3D().removeAll();
}
/* ---------------------------------------- */
/* 添加查询结果为新的选择集.                */
/* ---------------------------------------- */
var resultFeatures = queryEventArgs.originResult.features;
for (var m = 0; m < resultFeatures.length; m++)
{
    var feature2D = resultFeatures[m];
    var id=feature2D.ID;
    var layer3D = scene.get_layer3Ds().get_item("图层名");
    // id为sql查询出来的。如果是直接点击,直接赋值即可。
    layer3D.get_selection3D().add(id);
    // 如果要更改风格
    layer3D.get_selection3D().set_style3D(Style3D)
}
   
3,389EXP 2016年11月23日

我想为

layer3D.get_selection3D().add(id)
更改风格该怎么写?

您好,前面已经告知用:

layer3D.get_selection3D().set_style3D(Style3D)。
Style3D构造函数为:
var instanceVar = new SuperMap.Web.Core.Style3D();
然后就是设置
instanceVar.set_altitudeMode()
instanceVar.set_fillForeColor()等风格属性..
更详细内容请参考帮助文档。

您好这个是我没说清楚,Style3D的设置我是知道的,

layer3D.get_selection3D().add(id)所显示的是深蓝色,我想让它显示我设置的颜色,该怎么弄。
我试过
layer3D.get_selection3D().add(id).set_style3D(Style3D)。但是没有成功,这种情况该怎么设置
layer3D.get_selection3D().set_style3D(Style3D)
这样可以更改我鼠标双击的,但是我是想为查询出的id更改风格,不需要add(id)吗?
这个是更改的选择集风格,把查询出来的ID加到选择集即可。
var select = layer.get_selection3D().add(106);
select.set_style3D(style3D);
这样吗?我试过不好用。
var select = layer.get_selection3D().set_style3D(style3D);
select.add(106);
这样我也试过,也不好用
这样添加
layer3D.get_selection3D().add(id);
...