com.supermap.mapping
类 TrackingLayer

java.lang.Object
  继承者 com.supermap.mapping.TrackingLayer

public class TrackingLayer
extends java.lang.Object

跟踪图层类。

在 SuperMap 中,每个地图窗口都有一个跟踪图层,确切地说,每个地图显示时都有一个跟踪图层。 跟踪图层是一个空白的透明图层,总是在地图各图层的最上层,主要用于在一个处理或分析过程中,临时存放一些图形对象,以及一些文本等。 只要地图显示,跟踪图层就会存在,你不可以删除跟踪图层,也不可以改变其位置。

在 SuperMap 中跟踪图层的作用主要有以下方面:

  1. 当不想往记录集中添加几何对象,而又需要这个几何对象的时候,就可以把这个几何对象临时添加到跟踪图层上,用完该几何对象之后清除跟踪图层即可。例如,当需要测量距离时,需要在地图上拉一条线,但是这一条线在地图上并不存在,此时就可以使用跟踪图层来实现。
  2. 当需要对目标进行动态跟踪的时候,如果把目标放到记录集中,要实现动态跟踪就得不断地刷新整个图层,这样会大大影响效率,如果将这个需要进行跟踪地目标放到跟踪层上,这样就只需要刷新跟踪图层即可实现动态跟踪。
  3. 当需要进行批量地往记录集中添加几何对象的时候,可以先将这些对象临时放在跟踪图层上,确定需要添加之后再把跟踪图层上的几何对象批量地添加到记录集中。
  4. 请注意避免把跟踪图层作为存储大量临时几何对象的容器,如果有大量的临时数据,建议在本地计算机临时目录下(如:c:\temp)创建临时数据源,并在临时数据源中创建相应的临时数据集来保存临时数据。

    你可以对跟踪图层进行控制,包括控制跟踪图层是否可显示以及符号是否随图缩放。跟普通图层不同的是,跟踪图层中的对象是不保存的,只是在地图显示时,临时存在内存中。当地图关闭后,跟踪图层中的对象依然存在,相应内存释放掉才会消失,当地图再次被打开后,跟踪图层又显示为一个空白而且透明的图层。

    该类提供了对跟踪图层上的几何对象进行添加,删除等管理的方法。并且可以通过设置标签的方式对跟踪图层上的几何对象进行分类,你可以将标签理解为对几何对象的描述,相同用途的几何对象可以具有相同的标签。


    方法摘要
     int add(Geometry geometry, java.lang.String tag)
              向当前跟踪图层中添加一个几何对象,并给出其标签信息。
     boolean cancelBulkOperated()
              取消本次批量更新并恢复到上次提交点编辑的内容,但可以继续进行批量编辑。
     void clear()
              清空此跟踪图层中的所有几何对象。
     boolean flushBulkEdit()
              批量更新时强制刷新并保存本次批量编辑的数据。
     Geometry get(int index)
              返回此跟踪图层中指定索引的几何对象。
     int getCount()
              返回当前跟踪图层的几何对象的个数。
     double getSymbolScale()
              返回此跟踪图层的符号缩放基准比例尺。
     java.lang.String getTag(int index)
              返回此跟踪图层中指定索引的几何对象的标签。
     int hitTest(Point2D point2D, double tolerance)
              返回满足条件的几何对象的 ID。
     int indexOf(java.lang.String tag)
              返回第一个与指定标签相同的几何对象所处的索引值。
     boolean isAntialias()
              返回一个布尔值指定是否反走样跟踪图层。
     boolean isSymbolScalable()
              返回跟踪图层的符号大小是否随图缩放。
     boolean isVisible()
              返回此跟踪图层是否可见。
     boolean remove(int index)
              在当前跟踪图层中删除指定索引的几何对象。
     boolean set(int index, Geometry geometry)
              将跟踪图层中的指定的索引处的几何对象替换为指定的几何对象,若此索引处原先有其他几何对象,则会被删除。
     void setAntialias(boolean value)
              设置一个布尔值指定是否反走样跟踪图层。
     boolean setEditBulk(boolean value)
              设置批量更新标志。
     void setSymbolScalable(boolean value)
              设置跟踪图层的符号大小是否随图缩放。
     void setSymbolScale(double value)
              设置此跟踪图层的符号缩放基准比例尺。
     boolean setTag(int index, java.lang.String tag)
              设置此跟踪图层中指定索引的几何对象的标签。
     void setVisible(boolean value)
              设置此跟踪图层是否可见。
     
    从类 java.lang.Object 继承的方法
    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    方法详细信息

    getCount

    public int getCount()
    返回当前跟踪图层的几何对象的个数。

    返回:
    当前跟踪图层的几何对象的个数。
    默认值:
    默认值为 0。

    isVisible

    public boolean isVisible()
    返回此跟踪图层是否可见。true 表示此跟踪图层可见,false 表示此跟踪图层不可见。当此跟踪图层不可见时,其他的设置都将无效。

    返回:
    一个布尔值指示此图层是否可见。
    默认值:
    默认值为 true。

    setVisible

    public void setVisible(boolean value)
    设置此跟踪图层是否可见。true 表示此跟踪图层可见,false 表示此跟踪图层不可见。当此跟踪图层不可见时,其他的设置都将无效。

    参数:
    value - 一个布尔值指示此图层是否可见。

    isSymbolScalable

    public boolean isSymbolScalable()
    返回跟踪图层的符号大小是否随图缩放。true 表示当随着地图的缩放而缩放,在地图放大的同时,符号同时也放大。

    返回:
    一个布尔值指示跟踪图层的符号大小是否随图缩放。
    默认值:
    默认值为 false。

    setSymbolScalable

    public void setSymbolScalable(boolean value)
    设置跟踪图层的符号大小是否随图缩放。true 表示当随着地图的缩放而缩放,在地图放大的同时,符号同时也放大。

    参数:
    value - 一个布尔值指示跟踪图层的符号大小是否随图缩放。

    getSymbolScale

    public double getSymbolScale()
    返回此跟踪图层的符号缩放基准比例尺。

    更多信息请参见 Layer.getSymbolScale()Layer.setSymbolScale() 方法。

    返回:
    此跟踪图层的符号缩放基准比例尺。
    默认值:
    默认值为1。

    setSymbolScale

    public void setSymbolScale(double value)
    设置此跟踪图层的符号缩放基准比例尺。

    更多信息请参见 Layer.getSymbolScale()Layer.setSymbolScale() 方法。

    参数:
    value - 此跟踪图层的符号缩放基准比例尺。

    isAntialias

    public boolean isAntialias()
    返回一个布尔值指定是否反走样跟踪图层。

    文本、线型被设置为反走样后,可以去除一些显示锯齿,使显示更加美观。如图分别为线型和文本反走样前和反走样后的效果对比。

    返回:
    反走样跟踪图层返回 true;否则返回 false。

    setAntialias

    public void setAntialias(boolean value)
    设置一个布尔值指定是否反走样跟踪图层。

    文本、线型被设置为反走样后,可以去除一些显示锯齿,使显示更加美观。如图分别为线型和文本反走样前和反走样后的效果对比。

    参数:
    value - 一个布尔值指定是否反走样跟踪图层。

    add

    public int add(Geometry geometry,
                   java.lang.String tag)
    向当前跟踪图层中添加一个几何对象,并给出其标签信息。

    参数:
    geometry - 要添加的几何对象。
    tag - 要添加的几何对象的标签。
    返回:
    添加到跟踪图层的几何对象的索引。
    示例:
    请参见 TextStyle 的示例。

    remove

    public boolean remove(int index)
    在当前跟踪图层中删除指定索引的几何对象。

    参数:
    index - 要删除的几何对象的索引。
    返回:
    删除成功返回 true;否则返回 false。

    get

    public Geometry get(int index)
    返回此跟踪图层中指定索引的几何对象。

    参数:
    index - 要返回的几何对象的索引。
    返回:
    指定索引的几何对象。

    set

    public boolean set(int index,
                       Geometry geometry)
    将跟踪图层中的指定的索引处的几何对象替换为指定的几何对象,若此索引处原先有其他几何对象,则会被删除。

    参数:
    index - 要替换几何对象的索引。
    geometry - 用来替换的新 Geometry 对象。
    返回:
    替换成功返回 true;否则返回 false。

    getTag

    public java.lang.String getTag(int index)
    返回此跟踪图层中指定索引的几何对象的标签。

    参数:
    index - 要返回标签的几何对象的索引。
    返回:
    此跟踪图层中指定索引的几何对象的标签。

    setTag

    public boolean setTag(int index,
                          java.lang.String tag)
    设置此跟踪图层中指定索引的几何对象的标签。

    参数:
    index - 要设置标签的几何对象的索引。
    tag - 几何对象的新标签。
    返回:
    设置成功返回 true;否则返回 false。

    clear

    public void clear()
    清空此跟踪图层中的所有几何对象。


    hitTest

    public int hitTest(Point2D point2D,
                       double tolerance)
    返回满足条件的几何对象的 ID。若指定的点与几何对象上最近点的距离是在指定容限范围的范围内,则该几何对象的 ID 被返回。 如果跟踪图层中没有符合条件的几何对象,则返回 -1; 如果地图上有多个重叠的几何对象都满足条件,则返回最上面的几何对象的 ID。

    参数:
    point2D - 要测试的点。
    tolerance - 指定的容限。
    返回:
    返回满足条件的几何对象的 ID 号。

    indexOf

    public int indexOf(java.lang.String tag)
    返回第一个与指定标签相同的几何对象所处的索引值。

    参数:
    tag - 需要进行索引检查的标签。
    返回:
    返回第一个与指定标签相同的几何对象所处的索引值。

    setEditBulk

    public boolean setEditBulk(boolean value)
    设置批量更新标志。true 表示开始批量更新,false 表示取消批量更新。

    参数:
    value - 批量更新标志
    返回:
    一个布尔值, 开始批量更新返回 true,取消批量更新返回 false。
    示例:
    以下代码示范如何在跟踪层和设备层批量添加Geometry的功能。
     public void editBulkTest()
        {
            // 建立与 mapControl 关联的工作空间
            Workspace workspace = new Workspace();
            MapControl mapControl = new MapControl();
    
            //创建地图对象
            Map map = mapControl.getMap();
            map.setWorkspace(workspace);
    
            // 获取数据集
            Datasets datasets  = workspace.getDatasources().get(0).getDatasets();
            DatasetVector dataset = (DatasetVector)datasets.get("ocean");
            Recordset recordset = dataset.query("", CursorType.STATIC);
    
            //将记录位置移到第一位
            recordset.moveFirst();
    
            //将“Ocean”中的记录批量添加到跟踪层
            //开始批量添加
           map.getTrackingLayer().setEditBulk(true);
           while(!recordset.isEOF())
           {
                  Geometry geometry = recordset.getGeometry();
                  map.getTrackingLayer().add(geometry,"");
                  geometry.dispose();     
                  recordset.moveNext();
           }
           //批量更新,将本次批量编辑的数据保存
           map.getTrackingLayer().flushBulkEdit();
    
           //结束批量添加
           map.getTrackingLayer().setEditBulk(false);
    
           //释放记录集
           recordset.dispose();
        }
     

    flushBulkEdit

    public boolean flushBulkEdit()
    批量更新时强制刷新并保存本次批量编辑的数据。

    返回:
    一个布尔值, 强制刷新返回 true,否则返回 false。

    cancelBulkOperated

    public boolean cancelBulkOperated()
    取消本次批量更新并恢复到上次提交点编辑的内容,但可以继续进行批量编辑。

    返回:
    一个布尔值, 取消批量尊亲返回 true,否则返回 false。