com.supermap.mapping

类 LayerChart



  • public class LayerChart
    extends Layer
    海图图层类。该类继承于 Layer 类,提供对海图图层的显示、选择等控制的方法。
    示范代码:
    以下代码示范了如何获取海图图层,并获取海图图层上选择的对象信息数组,以及读取物标信息。使用本示例代码,请确保在您的项目中存在 一个名为 m_mapControl 的地图控件(MapControl),并且与当前工作空间相关联。还要求在当前工作空间的地图中已经添加了一幅海图图层(LayerChart), 且该海图图层上存在被选中的海图物标。
            /**
             * 获取海图图层并查询选中的海图物标的信息。
             */
            private void layerChartExample() {
                    //获取海图图层
                    LayerChart layerChart = (LayerChart)m_mapControl.getMap().getLayers().get(0);
                    
                    //获取海图图层上被选中的物标信息数组
                    ChartObjectInfo[] chartObjectInfos = layerChart.getSelectionInfos();
    
                    //遍历选中的物标信息数组,获取物标的基本信息
                    if (chartObjectInfos.length > 0) {
                            ChartObjectInfo chartObjectInfo;
                            for (int i = 0; i < chartObjectInfos.length; i++) {
                                    chartObjectInfo = chartObjectInfos[i];
    
                                    //获取物标的本地化名称
                                    String name = chartObjectInfo.getLocalName();
                                    //获取物标的 RCID 标识
                                    long featureID = chartObjectInfo.getFeatureID();
                                    //获取物标的物标编码
                                    int code = chartObjectInfo.getCode();
                                    //获取物标的几何对象类型
                                    GeometryType type = chartObjectInfo.getGeometryType();
    
                                    //还可以通过 ChartObjectInfo 类的其他属性获取物标简称、机构简称、水深
                                    //值等信息
                                    String Infos = "第" + (i + 1) + "个物标\n名称:" + name + "\n物标编码:"
                                            + code + "\nRCID:" + featureID + "\n几何对象类型:" + type + "\n";
    
                                    //获取 S-57 标准中定义的物标属性信息,包括属性的简称和字段值
                                    ChartAttributeInfo[] chartAttributeInfos = chartObjectInfo.getS57Attributes();
                                    ChartAttributeInfo chartAttributeInfo;
                                    String attributeInfo;
                                    for (int j = 0; j < chartAttributeInfos.length; j++) {
                                            chartAttributeInfo = chartAttributeInfos[j];
                                            attributeInfo = "属性简称:" + chartAttributeInfo.getAcronym() + "  值:"
                                                    + chartAttributeInfo.getValue() + "\n";
                                            Infos += attributeInfo;
                                    }
    
                                    //输出物标信息
                                    System.out.print(Infos);
                            }
                    }
            }
     
    • 方法详细资料

      • getDatasetGroup

        public DatasetGroup getDatasetGroup()
        返回当前海图图层对应的数据集分组。
        返回:
        当前海图图层对应的数据集分组。
      • getSelections

        public Selection[] getSelections()
        返回当前海图图层的选择集的集合。
        返回:
        指定的图层选择集集合。
      • getSelectionInfos

        public ChartObjectInfo[] getSelectionInfos()
        返回当前选择的对象信息数组。
        返回:
        指定的对象信息数组。
        示范代码:
        请参见 LayerChart 类的示例。
      • clearSelections

        public void clearSelections()
        清空选择集数组。
      • hitTestExtend

        public boolean hitTestExtend(Point2D point,
                                     double tolerance)
        海图图层扩展的点击测试,返回是否点击成功。

        若指定的点与对象上最近点的距离是在指定的容限范围内,则该对象被选中。 如果多个重叠的对象都满足条件,则都被选中。

        参数:
        point - 要测试的点。
        tolerance - 指定的容限。
        返回:
        是否点击成功。
      • highlightObject

        public void highlightObject(long featureID,
                                    int recordsetID,
                                    boolean isMoveToCenter)
        高亮显示选择集中指定的某个物标对象。

        注意:

        1. 高亮显示选择集中的指定物标对象后,选择集中的其他物标对象不再高亮显示;重新选择要素后,该物表对象的高亮显示失效;

        2. 该方法会自动刷新跟踪层或地图,不需要再手动调用刷新。

        参数:
        featureID - 指定的物标对象的 ID。
        recordsetID - 指定的物标对象所在记录集的 ID。
        isMoveToCenter - 指定是否要将此物标在地图窗口中居中显示,为 true 时会刷新地图。
        示范代码:
        以下代码示范了如何高亮显示海图图层选择集中的某一个海图物标对象。使用如下代码时,请确保存在包含海图图层的地图上存在被选中的海图物标。
                /**
                 * 高亮显示指定的海图物标。
                 * @param layerChart 指定的选中物标的海图图层。
                 */
                private void highlightChartObjectExample(LayerChart layerChart) {
                        //获取海图图层上被选中的物标信息数组
                        ChartObjectInfo[] chartObjectInfos = layerChart.getSelectionInfos();
        
                        //将物标对象信息数组中的第 1 个物标高亮显示
                        if (chartObjectInfos.length > 0) {
                                long featureID = chartObjectInfos[0].getFeatureID();
                                int recordsetID = chartObjectInfos[0].getRecordsetID();
                                GeometryType type = chartObjectInfos[0].getGeometryType();
        
                                //高亮该海图物标
                                layerChart.highlightObject(featureID, recordsetID, true);
                        }
                }
         
      • deleteSubLayer

        public boolean deleteSubLayer(Dataset dataset)
      • setAttributeModifiedFlag

        public void setAttributeModifiedFlag()
        通过记录集编辑属性,在编辑完成时进行设置,用于刷新地图时重新读取部分数据集。
      • getTextClipRegion

        public GeoRegion getTextClipRegion()
        返回文本显示裁剪区,该裁剪区裁剪对应海图图层上所有点线对象。
        返回:
        文本显示裁剪区。
      • setTextClipRegion

        public void setTextClipRegion(GeoRegion geoRegion)
        设置文本显示裁剪区,该裁剪区裁剪对应海图图层上所有点线对象。
        参数:
        value - 文本显示裁剪区。
      • refreshS57EditDatasetGroup

        public void refreshS57EditDatasetGroup()
      • computeBounds

        public void computeBounds()
      • updateData

        public void updateData()
      • getActiveAddSubLayer

        public LayerChartSub getActiveAddSubLayer()
      • getCount

        public int getCount()
      • getItemAt

        public Layer getItemAt(int index)
      • findLayer

        public Layer findLayer(String layerName)
        从类复制的说明: Layer
        根据给定的图层名称获取图层。
        覆盖:
        findLayer 在类中 Layer
        参数:
        layerName - 图层名称。
        返回:
        返回指定图层名称的图层。
      • setVisible

        public void setVisible(boolean value)
        从类复制的说明: Layer
        设置此图层是否可见。true 表示此图层可见,false 表示图层不可见。当图层不可见时,其他所有的属性的设置将无效。
        覆盖:
        setVisible 在类中 Layer
        参数:
        value - 指定图层是否可见。
      • setSnapable

        public void setSnapable(boolean value)
        从类复制的说明: Layer
        设置图层是否可捕捉。true 表示此图层可被捕捉,false 表示此图层不可被捕捉。在对图层进行编辑时,可捕捉属性可以精确地捕捉所需要的要素或位置。
        覆盖:
        setSnapable 在类中 Layer
        参数:
        value - 指定图层是否可捕捉。

Copyright © 2021–2024 SuperMap. All rights reserved.