com.supermap.realspace

类 Layer3Ds

  • java.lang.Object
    • com.supermap.data.InternalHandle
      • com.supermap.realspace.Layer3Ds


  • public class Layer3Ds
    extends com.supermap.data.InternalHandle
    三维图层集合类。

    该类对一个三维场景中的所有三维图层进行管理。

    一个三维场景窗口对应一个三维场景,即一个三维场景窗口中只能显示一个三维场景,一个三维场景相应的有一个三维图层集合, 由三维图层集合负责管理三维场景中显示的所有三维图层。

    三维图层集合类提供了三维图层的添加,删除,移动,查找等方法,可以实现向三维场景中添加各种类型的三维图层,将不需要显示在三维场景中的三维图层移除, 查找三维场景中是否包含指定名称的三维图层以及调整三维场景中各个三维图层的叠放次序等。

    示范代码:
    以下代码示例了向三维图层集合中添加和插入数据集类型的三维图层。
     public void AddLayer3Ds() {
            // 返回captial、world、ocean矢量数据集
            Workspace workspace = new Workspace();
            DatasourceConnectionInfo datasourceConnectInfo = new DatasourceConnectionInfo(
                            "D:\\SampleData\\World\\World.udb", "world", "");
            Datasource datasource = workspace.getDatasources().open(
                            datasourceConnectInfo);
            Dataset dataset0 = datasource.getDatasets().get("capital");
            Dataset dataset1 = datasource.getDatasets().get("world");
            Dataset dataset2 = datasource.getDatasets().get("ocean");
     
            //返回三维场景对象
            SceneControl sceneControl = new SceneControl();
            sceneControl.getScene().setWorkspace(workspace);
     
            //返回三维图层集合对象
            Layer3Ds layer3Ds = sceneControl.getScene().getLayers();
     
            //构造三维矢量图层设置对象并进行设置
            Layer3DSettingVector layer3DSettingVector = new Layer3DSettingVector();
            GeoStyle3D style = new GeoStyle3D();
            style.setFillForeColor(Color.PINK);
            layer3DSettingVector.setStyle(style);
     
            //向三维图层集合中添加数据集类型的三维图层
            layer3Ds.clear();
            layer3Ds.add(dataset0, layer3DSettingVector, true);
            layer3Ds.add(dataset1, layer3DSettingVector, true);
     
            //向三维图层集合中指定位置处插入数据集类型的三维图层
            Layer3DDataset layer3DDataset = layer3Ds.insert(2, dataset2,
                            layer3DSettingVector, layer3DType.DATASET);
            layer3DDataset.updateData();
            sceneControl.getScene().refresh();
     
            //释放占用的资源
            sceneControl.dispose();
            workspace.dispose();
     }
     
    • 方法详细资料

      • getCount

        public int getCount()
        返回给定的三维图层集合中三维图层对象的总数。
        返回:
        给定的三维图层集合中三维图层对象的总数。
      • get

        public Layer3D get(int index)
        返回三维图层集合中指定索引的三维图层对象。三维图层集合中三维图层的索引从0开始编号。
        参数:
        index - 要查找的三维图层对象的索引。
        返回:
        三维图层集合中指定索引的三维图层对象。
      • get

        public Layer3D get(String name)
        返回三维图层集合中指定名称的三维图层对象。
        参数:
        name - 要查找的三维图层对象的名称。
        返回:
        三维图层集合中指定名称的三维图层对象。
      • getByCaption

        public ArrayList<Layer3D> getByCaption(String caption)
        返回三维图层集合中指定标题的三维图层对象数组。
        参数:
        caption - 要查找的三维图层对象的标题。
        返回:
        三维图层集合中指定标题的三维图层对象数组。
        从以下版本开始:
        11.3.0
      • add

        public Layer3DDataset add(Dataset dataset,
                                  Layer3DSetting layer3DSetting,
                                  boolean addToHead)
        向三维图层集合中添加数据集类型的三维图层。
        参数:
        dataset - 给定的数据集。
        layer3DSetting - 指定的三维图层设置对象。
        addToHead - 是否将新添加的三维图层加到最上面。
        返回:
        三维数据集图层对象。
        另请参阅:
        Layer3Ds类的示范代码。
      • add

        public Layer3DDataset add(Dataset dataset,
                                  Theme3D theme3D,
                                  boolean addToHead)
        向三维图层集合中添加数据集类型的图层,并以三维专题图的方式显示。

        注意:在使用 UDB 数据制作三维专题图时,在将制作好的三维专题图加入到三维场景中后,需要调用该三维专题图层的 Layer3DDataset.updateData() 方法,才能显示制作的三维专题图。

        参数:
        dataset - 给定的数据集。
        theme3D - 三维专题图。
        addToHead - 是否将新添加的三维图层加到最上面。
        返回:
        三维数据集图层对象。
        另请参阅:
        Layer3Ds类的示范代码。
      • insert

        public Layer3DDataset insert(int index,
                                     Dataset dataset,
                                     Layer3DSetting layer3DSetting)
        向三维图层集合中指定位置处插入数据集类型的三维图层。
        参数:
        index - 插入图层的位置。
        dataset - 给定的数据集。
        layer3DSetting - 指定的三维图层设置对象。
        返回:
        三维数据集图层对象。
        另请参阅:
        Layer3Ds类的示范代码。
      • insert

        public Layer3D insert(int index,
                              String dataName,
                              Layer3DType layerType)
        向三维图层集合中指定位置处插入 Model、KML、Map 或 ImageFile 类型的三维图层。
        参数:
        index - 插入图层的位置。
        dataName - Model、KML、Map 或 ImageFile 类型图层所对应的数据全路径。
        layerType - 图层的类型。如果添加的数据名称与图层类型不匹配,则添加失败。
        返回:
        三维图层对象。
        另请参阅:
        Layer3Ds类的示范代码。
      • insert

        public Layer3DDataset insert(int index,
                                     Dataset dataset,
                                     Theme3D theme3D)
        向三维图层集合中指定位置处插入数据集类型的图层,并以三维专题图的方式显示。
        参数:
        index - 插入图层的位置。
        dataset - 给定的数据集。
        theme3D - 三维专题图。
        返回:
        三维数据集图层对象。
        另请参阅:
        Layer3Ds类的示范代码。
      • add

        public Layer3DDataset add(Dataset dataset,
                                  Layer3DSetting layer3DSetting,
                                  boolean addToHead,
                                  String layerName)
        向三维图层集合中添加数据集类型的三维图层。
        参数:
        dataset - 给定的数据集。
        layer3DSetting - 指定的三维图层设置对象。
        addToHead - 是否将新添加的三维图层加到最上面。
        layerName - 指定新添加的三维图层的名称,不区分大小写。如果图层名称已存在,则抛出异常。
        返回:
        三维数据集图层对象。
        另请参阅:
        Layer3Ds类的示范代码。
      • add

        public Layer3D add(String dataName,
                           Layer3DType layerType,
                           boolean addToHead)
        向三维图层集合中添加Model、KML、Map或ImageFile 类型的三维图层。
        参数:
        dataName - Model、KML、Map或ImageFile 类型图层所对应的数据全路径。
        layerType - 图层的类型。如果添加的数据名称与图层类型不匹配,则添加失败。
        addToHead - 是否将新添加的三维图层加到最上面。
        返回:
        三维图层对象。
        另请参阅:
        Layer3Ds类的示范代码。
      • add

        public Layer3D add(String dataName,
                           Layer3DType layerType,
                           boolean addToHead,
                           String layerName)
        向三维图层集合中添加Model、KML、Map或ImageFile 类型的三维图层。
        参数:
        dataName - Model、KML、Map或ImageFile 类型图层所对应的数据全路径。
        layerType - 图层的类型。如果添加的数据名称与图层类型不匹配,则添加失败。
        addToHead - 是否将新添加的三维图层加到最上面。
        layerName - 指定新添加的三维图层的名称,不区分大小写。如果图层名称已存在,则抛出异常。
        返回:
        三维图层对象。
        另请参阅:
        Layer3Ds类的示范代码。
      • add

        public Layer3DDataset add(Dataset dataset,
                                  Theme3D theme3D,
                                  boolean addToHead,
                                  String layerName)
        向三维图层集合中添加数据集类型的图层,并以三维专题图的方式显示。

        注意:在使用 UDB 数据制作三维专题图时,在将制作好的三维专题图加入到三维场景中后,需要调用该三维专题图层的 Layer3DDataset.updateData() 方法,才能显示制作的三维专题图。

        此处向三维图层添加的数据集类型必须是 Point、Line、Region、Text、LinkTable 和 Network 类型,否则将会抛出异常。

        参数:
        dataset - 给定的数据集。
        theme3D - 三维专题图。
        addToHead - 是否将新添加的三维图层加到最上面。
        layerName - 指定新添加的三维图层的名称,不区分大小写。如果图层名称已存在,则抛出异常。
        返回:
        三维数据集图层对象。
        另请参阅:
        Layer3Ds类的示范代码
      • add

        public void add(Layer3D layer)
        将图层添加到当前分组,如果图层属于其他分组,则将从原分组移动到当前分组。
        参数:
        layer - 指定的三维图层。
      • add

        public Layer3D add(String dataName,
                           Layer3DType layerType,
                           boolean addToHead,
                           String layerName,
                           String password)
        向3D图层集合中添加 Model,KML,ImageFile,VectorFile 类型的图层,且加载时需要输入生成缓存时指定的密码。
        参数:
        dataName - Model、KML、Map 或 ImageFile 类型图层所对应的数据全路径。
        layerType - 图层的类型。如果添加的数据名称与图层类型不匹配,则添加失败。
        addToHead - 是否将新加载的图层加到最上面。
        layerName - 指定新添加三维图层的名称,如果已存在会抛出异常,不区分大小写。
        password - 加载三维数据需要的密码,该密码是生产缓存时指定的密码。
        返回:
        新加载的三维图层对象。
      • add

        public Layer3D add(String iserverURL,
                           Layer3DType layerType,
                           String layerName,
                           boolean addToHead)
        通过iServer数据服务向三维图层集合中添加三维图层对象。
        参数:
        iserverURL - iServer数据服务的URL。
        layerType - 三维图层类型。
        layerName - 用户指定的三维图层名称。
        addToHead - 是否将添加的三维图层置顶。
        返回:
        返回添加的三维图层对象。
      • add

        public Layer3D add(String iserverURL,
                           String layerName,
                           boolean addToHead)
        打开Arcgis服务图层。
        参数:
        iserverURL - Arcgis服务图层的URL。
        layerName - 图层名称。
        addToHead - 是否将添加的图层置顶。
        返回:
      • add

        public Layer3D add(String iserverURL,
                           String layerName,
                           String dataName,
                           double dDPI,
                           ImageFormatType imageType,
                           boolean addToHead)
        打开天地图服务图层。
        参数:
        iserverURL - 天地图服务地址。
        layerName - 图层名字。
        dataName - 数据名称。
        dDPI - DPI。
        imageType - 网络服务图片类型。
        addToHead - 是否将添加的图层置顶。
        返回:
        三维图层。
      • add

        public Layer3D add(String layerName,
                           Layer3DType layerType,
                           String userName,
                           String passWord,
                           boolean addToHead)
        添加在线公共地图。
        参数:
        layerName - 图层名称。
        layerType - 指定的图层类型。区分在线地图类型。
        userName - 用户账号。
        passWord - 账号密码。
        addToHead - 是否添加到最顶部。
        返回:
        返回在线地图图层。
      • add

        public Layer3D add(String iserverURL,
                           Layer3DType layerType,
                           String sceneName,
                           String layerName,
                           String dataName,
                           boolean addToHead)
        通过iServer图层服务向三维图层集合中添加三维图层对象。
        参数:
        iserverURL - iServer图层服务的URL。
        layerType - 三维图层类型。
        sceneName - 用户指定的场景名称。
        layerName - 用户指定的三维图层名称。
        dataName - 用户指定的数据名称。
        addToHead - 是否将添加的三维图层置顶。
        返回:
        返回添加的三维图层对象。
      • insert

        public Layer3DDataset insert(int index,
                                     Dataset dataset,
                                     Layer3DSetting layer3DSetting,
                                     String layerName)
        向三维图层集合中指定位置处插入数据集类型的三维图层。
        参数:
        index - 插入图层的位置。
        dataset - 给定的数据集。
        layer3DSetting - 指定的三维图层设置对象。
        layerName - 指定新插入的三维图层的名称,不区分大小写。如果图层名称已存在,则抛出异常。
        返回:
        三维数据集图层对象。
        另请参阅:
        Layer3Ds类的示范代码。
      • insert

        public Layer3D insert(int index,
                              String dataName,
                              String layerName,
                              Layer3DType layerType)
        向三维图层集合中指定位置处插入 Model、KML、Map 或 ImageFile 类型的三维图层。
        参数:
        index - 插入图层的位置。
        dataName - Model、KML、Map 或 ImageFile 类型图层所对应的数据全路径。
        layerName - 指定新插入的三维图层的名称,不区分大小写。如果图层名称已存在,则抛出异常。
        layerType - 图层的类型。如果添加的数据名称与图层类型不匹配,则添加失败。
        返回:
        三维图层对象。
        另请参阅:
        Layer3Ds类的示范代码。
      • insert

        public Layer3DDataset insert(int index,
                                     Dataset dataset,
                                     Theme3D theme3D,
                                     String layerName)
        向三维图层集合中指定位置处插入数据集类型的图层,并以三维专题图的方式显示。

        此处向三维图层插入的数据集类型必须是 Point、Line、Region、Text、LinkTable 和 Network 类型,否则将会抛出异常。

        注意:在使用 UDB 数据制作三维专题图时,在将制作好的三维专题图加入到三维场景中后,需要调用该三维专题图层的 Layer3DDataset.updateData() 方法,才能显示制作的三维专题图。

        参数:
        index - 插入图层的位置。
        dataset - 给定的数据集。
        theme3D - 三维专题图。
        layerName - 指定新插入的三维图层的名称,不区分大小写。如果图层名称已存在,则抛出异常。
        返回:
        三维数据集图层对象。
        另请参阅:
        Layer3Ds类的示范代码。
      • insert

        public Layer3D insert(int index,
                              String dataName,
                              String layerName,
                              Layer3DType layerType,
                              String password)
        向3D图层集合指定位置插入 Model,KML,ImageFile 或 VectorFile 类型的图层。
        参数:
        index - 插入图层的位置。
        dataName - Model、KML、Map 或 ImageFile 类型图层所对应的数据全路径。
        layerName - 指定新插入三维图层的名称,如果已存在会抛出异常,不区分大小写。
        layerType - 图层的类型。如果添加的数据名称与图层类型不匹配,则添加失败。
        password - 插入三维数据时需要的密码,该密码为生产缓存时指定的密码。
        返回:
        新插入的三维图层对象。
      • insert

        public void insert(int index,
                           Layer3D layer)
        向三维图层集合中指定位置处插入创建好的三维图层。
        参数:
        index - 插入图层的位置。
        layer - 创建好的三维图层。
      • remove

        public boolean remove(int index)
        用于从三维图层集合中删除一个指定索引的三维图层。删除成功则返回 true。
        参数:
        index - 要删除的三维图层的索引。
        返回:
        删除成功则返回 true,否则返回 false.
      • remove

        public boolean remove(String name)
        用于从三维图层集合中删除一个指定名称的三维图层。删除成功则返回 true。
        参数:
        name - 要删除的三维图层的名称。
        返回:
        删除成功则返回 true,否则返回 false.
      • clear

        public void clear()
        从三维图层集中删除所有三维图层。
      • indexOf

        public int indexOf(String name)
        返回此三维图层集合中指定名称的三维图层的索引。
        参数:
        name - 要查找的三维图层的名称。
        返回:
        找到指定的三维图层则返回该三维图层的索引,否则返回-1。
      • indexOfByCaption

        public int[] indexOfByCaption(String caption)
        返回此三维图层集合中指定名称的三维图层的索引数组。
        参数:
        caption - 要查找的三维图层的标题。
        返回:
        找到指定的三维图层则返回该三维图层的索引数组,否则返回null。
        从以下版本开始:
        11.3.0
      • contains

        public boolean contains(String name)
        返回此三维图层集合对象是否包含指定名称的三维图层。
        参数:
        name - 可能包含在此三维图层集合中的三维图层对象的名称。
        返回:
        若此三维图层集合中包含指定名称的图层则返回 true,否则返回 false。
      • moveToTop

        public boolean moveToTop(int index)
        用于将三维图层集合中指定的三维图层移动到最顶层。
        参数:
        index - 要移动到最顶层的三维图层的索引。
        返回:
        移动成功返回 true,否则返回 false。
      • moveToBottom

        public boolean moveToBottom(int index)
        用于将三维图层集合中指定的三维图层移动到最顶层。
        参数:
        index - 要移动到最底层的三维图层的索引。
        返回:
        移动成功返回 true,否则返回 false。
      • moveUp

        public boolean moveUp(int index)
        用于将三维图层集合中指定索引的三维图层往上移动一层。
        参数:
        index - 要移动的三维图层的索引。
        返回:
        移动成功返回 true,否则返回 false。
      • moveDown

        public boolean moveDown(int index)
        用于将三维图层集合中指定索引的三维图层往下移动一层。
        参数:
        index - 要移动的三维图层的索引。
        返回:
        移动成功返回 true,否则返回 false。
      • moveTo

        public boolean moveTo(int sourceIndex,
                              int targetIndex)
        用于将此三维图层集合中的指定索引的三维图层移动到指定的目标索引。
        参数:
        sourceIndex - 要移动的三维图层的原索引。
        targetIndex - 目标位置索引。
        返回:
        移动成功返回 true,否则返回 false。
      • addLayer3DAddedListener

        public void addLayer3DAddedListener(Layer3DAddedListener l)
        添加一个用于接收三维图层添加事件(Layer3DAddedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层添加事件的监听器。
      • removeLayer3DAddedListener

        public void removeLayer3DAddedListener(Layer3DAddedListener l)
        删除一个用于接收三维图层添加事件(Layer3DAddedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层添加事件的监听器。
      • addLayer3DRemovedListener

        public void addLayer3DRemovedListener(Layer3DRemovedListener l)
        添加一个用于接收三维图层被删除事件(Layer3DRemovedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层被删除事件的监听器。
      • removeLayer3DRemovedListener

        public void removeLayer3DRemovedListener(Layer3DRemovedListener l)
        删除一个用于接收三维图层被删除事件(Layer3DRemovedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层被删除事件的监听器。
      • addLayer3DCaptionChangedListener

        public void addLayer3DCaptionChangedListener(Layer3DCaptionChangedListener l)
        添加一个用于接收三维图层标题改变事件(Layer3DCaptionChangedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层标题改变事件的监听器。
      • removeLayer3DCaptionChangedListener

        public void removeLayer3DCaptionChangedListener(Layer3DCaptionChangedListener l)
        删除一个用于接收三维图层标题改变事件(Layer3DCaptionChangedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层标题改变事件的监听器。
      • addLayer3DSelectableChangedListener

        public void addLayer3DSelectableChangedListener(Layer3DSelectableChangedListener l)
        添加一个用于接收三维图层可选择设置变化事件(Layer3DSelectableChangedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层可选择设置改变事件的监听器。
      • removeLayer3DSelectableChangedListener

        public void removeLayer3DSelectableChangedListener(Layer3DSelectableChangedListener l)
        删除一个用于接收三维图层可选择设置变化事件(Layer3DSelectableChangedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层可选择设置变化事件的监听器。
      • addLayer3DEditableChangedListener

        public void addLayer3DEditableChangedListener(Layer3DEditableChangedListener l)
        添加一个用于接收三维图层可编辑设置改变事件(Layer3DEditableChangedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层可编辑设置改变事件的监听器。
      • removeLayer3DEditableChangedListener

        public void removeLayer3DEditableChangedListener(Layer3DEditableChangedListener l)
        删除一个用于接收三维图层可编辑设置改变事件(Layer3DEditableChangedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层可编辑设置改变事件的监听器。
      • addLayer3DVisibleChangedListener

        public void addLayer3DVisibleChangedListener(Layer3DVisibleChangedListener l)
        添加一个用于接收三维图层可视状态改变事件(Layer3DVisibleChangedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层可视状态改变事件的监听器。
      • removeLayer3DVisibleChangedListener

        public void removeLayer3DVisibleChangedListener(Layer3DVisibleChangedListener l)
        删除一个用于接收三维图层可视状态改变事件(Layer3DVisibleChangedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层可视状态改变事件的监听器。
      • addLayer3DAlwaysRenderChangedListener

        public void addLayer3DAlwaysRenderChangedListener(Layer3DAlwaysRenderChangedListener l)
        添加一个用于接收三维图层持续渲染状态改变事件(Layer3DAlwaysRenderChangedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层持续渲染状态改变事件的监听器。
      • removeLayer3DAlwaysRenderChangedListener

        public void removeLayer3DAlwaysRenderChangedListener(Layer3DAlwaysRenderChangedListener l)
        删除一个用于接收三维图层持续渲染状态改变事件(Layer3DAlwaysRenderChangedEvent)的监听器。
        参数:
        l - 一个用于接收三维图层持续渲染状态改变事件的监听器。

Copyright © 2021–2024 SuperMap. All rights reserved.