com.supermap.ui
类 SceneControl

java.lang.Object
  继承者 com.supermap.ui.SceneControl

public class SceneControl
extends java.lang.Object

三维场景控件。

一个三维场景窗口(SceneControl)对应一个三维场景(Scene),即一个三维场景窗口中只能显示一个三维场景。

三维场景控件是通过对三维模型的可视化表达,即以视觉化的形式将它们表现出来,可以为用户提供一些二维地图数据无法直接提供的信息。三维可视化广泛应用于医学、军事、地质、勘探等领域。在三维GIS中,三维数据可视化可以真实地表现空间数据、逼真地模拟仿真地理信息现实,进而可以直观地展现用户感兴趣的数据。

在三维窗口中,滚动鼠标滚轮,可以进行三维场景的放大或缩小的操作;按住鼠标滚轮进行上下拖动,可以对三维场景的进行倾斜操作,如果按住鼠标滚轮进行左右拖动,可以对三维场景进行旋转,另外,使用shift+光标键(上下光标键和左右光标键)也可以实现三维场景的倾斜和旋转操作。

注意:当用户使用该三维场景控件对象进行编程时,如果将 Workspace 与 SceneControl 建立了关联,那么在进行对象的关闭时,一定需要注意关闭的顺序,如下:

1、关闭scene 对象;

2、关闭SceneControl对象;

3、关闭Workspace对象。


嵌套类摘要
static class SceneControl.Cursors
          该类为 SceneControl 类的内部类,主要提供三维场景窗口中的默认光标。
 
构造方法摘要
SceneControl()
          默认构造函数,构造一个新的 SceneControl 对象。
SceneControl(SceneType sceneType)
          根据指定的sceneType构造一个新的SceneControl对象。
 
方法摘要
 void addActionChangedListener(Action3DChangedEvent l)
          添加一个用于三维场景控件操作状态改变事件(Action3DChangedEvent)的监听器。
 void addObjectSelectedListener(ObjectSelectedListener l)
          添加一个用于接收对象被选中事件(ObjectSelectedEvent)的监听器。
 void addTrackedListener(Tracked3DListener l)
          添加一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制结束事件(Tracked3DEvent)的监听器。
 void addTrackingListener(Tracking3DListener l)
          添加一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制事件(Tracking3DEvent)的监听器。
 void dispose()
          释放该对象所占用的资源。
 void doKeyDown(java.awt.event.KeyEvent e)
          当焦点在控件上按下键时执行 KeyDown 操作。
 void doMouseDown(java.awt.event.MouseEvent e)
          当指针在三维场景控件上,用户按下鼠标按钮时,将执行 MouseDown 操作。
 void doMouseMove(java.awt.event.MouseEvent e)
          当用户移动鼠标指针经过三维场景控件时,将执行 MouseMove 操作。
 void doMouseUp(java.awt.event.MouseEvent e)
          当指针保持在控件上,用户释放鼠标按钮时,执行 MouseUp 操作。
 void doMouseWheel(java.awt.event.MouseWheelEvent e)
          在鼠标滚轮转动时执行 MouseWheel 操作。
 Action3D getAction()
          返回三维场景操作状态。
 Layer3D getActiveEditableLayer()
          返回当前可编辑的图层。
 Layer3D[] getEditableLayers()
          返回三维场景窗口中的所有可编辑图层。
 InteractionMode3D getInteractionMode()
          返回当前三维场景控件的互操作模式。
 NavigationControl getNavigationControl()
          返回三维场景导航对象。
 double getPanDatumPlane()
          返回漫游基准面。
 Scene getScene()
          返回三维地图场景(Scene)对象。
 SnapMode3D getSnapMode()
          获取三维场景中的模型对象支持顶点捕捉。
 boolean isAlwaysActive()
          获取场景是否保持激活状态。
 boolean isAlwaysUpdate()
          返回三维场景是否在失去焦点时停止更新数据。
 boolean isCursorCustomized()
          返回当前场景控件的光标变化是否自定义。
 boolean isDynamicSelection()
          获取当鼠标滑动时,场景对象是否动态高亮显示。
 boolean isFPSVisible()
          返回三维场景控件的帧率信息是否可见。
 boolean isKeyboardNavigationEnabled()
          返回是否可以通过键盘进行导航漫游。
 boolean isMouseNavigationEnabled()
          返回是否可以通过鼠标进行导航漫游。
 boolean isStatusBarShowAltitude()
          获取状态条是否显示高度。
 boolean isStatusBarVisible()
          返回状态条是否可见。
 boolean isWaitCursorEnabled()
          返回当前场景窗口的等待光标是否有效。
 void removeActionChangedListener(Action3DChangedEvent l)
          移除一个用于三维场景控件操作状态改变事件(Action3DChangedEvent)的监听器。
 void removeObjectSelectedListener(ObjectSelectedListener l)
          移除一个用于接收对象被选中事件(ObjectSelectedEvent)的监听器。
 void removeTrackedListener(Tracked3DListener l)
          移除一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制结束事件(Tracked3DEvent)的监听器。
 void removeTrackingListener(Tracking3DListener l)
          移除一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制事件(Tracking3DEvent)的监听器。
 void setAction(Action3D action3D)
          设置三维场景操作状态。
 void setActiveEditableLayer(Layer3D layer3D)
          设置当前可编辑的图层。
 void setAlwaysActive(boolean alwaysActive)
          设置场景是否保持激活状态。
 void setAlwaysUpdate(boolean value)
          设置获三维场景是否在失去焦点时停止更新数据。
 void setCursorCustomized(boolean value)
          设置当前场景控件的光标变化是否自定义。
 void setDynamicSelection(boolean value)
          设置当鼠标滑动时,场景对象是否动态高亮显示。
 void setFPSVisible(boolean value)
          设置三维场景控件的帧率信息是否可见。
 void setInteractionMode(InteractionMode3D value)
          设置当前三维场景控件的互操作模式。
 void setKeyboardNavigationEnabled(boolean value)
          设置是否可以通过键盘进行导航漫游。
 void setMouseNavigationEnabled(boolean value)
          设置是否可以通过鼠标进行导航漫游。
 void setPanDatumPlane(double value)
          设置漫游基准面。
 void setSnapMode(SnapMode3D value)
          设置三维场景中的模型对象是否进行顶点捕捉。
 void setStatusBarShowAltitude(boolean value)
          设置状态条是否显示高度。
 void setStatusBarVisible(boolean value)
          设置状态条是否可见。
 void setWaitCursorEnabled(boolean value)
          设置当前场景窗口的等待光标是否有效。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SceneControl

public SceneControl()
默认构造函数,构造一个新的 SceneControl 对象。


SceneControl

public SceneControl(SceneType sceneType)
根据指定的sceneType构造一个新的SceneControl对象。

参数:
sceneType - 指定的场景类型。
方法详细信息

isFPSVisible

public boolean isFPSVisible()
返回三维场景控件的帧率信息是否可见。其中帧率信息包括平均帧率、最好帧率、最差帧率和三角面数量。

返回:
三维场景控件的帧率信息是否可见。帧率信息可见返回true,不可见返回false。
默认值:
默认值为 false。

setFPSVisible

public void setFPSVisible(boolean value)
设置三维场景控件的帧率信息是否可见。其中帧率信息包括平均帧率、最好帧率、最差帧率和三角面数量。

参数:
value - 三维场景控件的帧率信息是否可见。

isKeyboardNavigationEnabled

public boolean isKeyboardNavigationEnabled()
返回是否可以通过键盘进行导航漫游。

返回:
可以通过键盘进行导航漫游返回 true;否则返回 false。
默认值:
默认值为 true。

setKeyboardNavigationEnabled

public void setKeyboardNavigationEnabled(boolean value)
设置是否可以通过键盘进行导航漫游。

参数:
value - 一个布尔值指定是否可以通过键盘进行导航漫游。

getActiveEditableLayer

public Layer3D getActiveEditableLayer()
返回当前可编辑的图层。如果当前是多图层编辑模式(即 MapControl.isMultiLayerEditEnabled() 的返回值为 true),则当前可编辑图层的默认值为可编辑图层的第一个图层,对对象的绘制和粘贴操作只作用在该图层上,而非所有的可编辑图层上。

返回:
当前可编辑的图层。

setActiveEditableLayer

public void setActiveEditableLayer(Layer3D layer3D)
设置当前可编辑的图层。如果当前是多图层编辑模式(即 MapControl.isMultiLayerEditEnabled() 的返回值为 true),则当前可编辑图层的默认值为可编辑图层的第一个图层,对对象的绘制和粘贴操作只作用在该图层上,而非所有的可编辑图层上。

参数:
layer3D - 设置当前可编辑的图层。

isMouseNavigationEnabled

public boolean isMouseNavigationEnabled()
返回是否可以通过鼠标进行导航漫游。

该方法决定了三维场景控件在运行的时候是否通过鼠标来进行导航漫游。当本方法返回值为 true 的时候,用户可以使用鼠标左键进行上下左右的导航显示,使用鼠标右键进行放大和缩小的漫游显示。

返回:
一个布尔值,可以通过鼠标进行导航漫游返回 true;否则返回 false。
默认值:
默认值为 false。

setMouseNavigationEnabled

public void setMouseNavigationEnabled(boolean value)
设置是否可以通过鼠标进行导航漫游。

该方法决定了三维场景控件在运行的时候是否通过鼠标来进行导航漫游。当本方法返回值为 true 的时候,用户可以使用鼠标左键进行上下左右的导航显示,使用鼠标右键进行放大和缩小的漫游显示。

参数:
value - 一个布尔值指定是否可以通过鼠标进行导航漫游。

isStatusBarVisible

public boolean isStatusBarVisible()
返回状态条是否可见。

返回:
一个布尔值,状态条可见返回 true;否则返回 false。
默认值:
默认值为 true。

setStatusBarVisible

public void setStatusBarVisible(boolean value)
设置状态条是否可见。

参数:
value - 一个布尔值指定状态条是否可见。

getScene

public Scene getScene()
返回三维地图场景(Scene)对象。

返回:
三维地图场景(Scene)对象。
默认值:
默认值为 Scene 对象的默认值。

getAction

public Action3D getAction()
返回三维场景操作状态。有关三维场景的操作状态,请参见 Action3D

返回:
三维场景操作状态。
默认值:
默认值为 Action3D.PAN

setAction

public void setAction(Action3D action3D)
设置三维场景操作状态。有关三维场景的操作状态,请参见 Action3D

参数:
action3D - 三维场景操作状态。

getNavigationControl

public NavigationControl getNavigationControl()
返回三维场景导航对象。

返回:
三维场景导航对象。
默认值:
默认值为 NavigationControl 对象的默认值。

isWaitCursorEnabled

public boolean isWaitCursorEnabled()
返回当前场景窗口的等待光标是否有效。为 true 时,在场景绘制等待时,系统会自动切换成等待光标,为 false 时,则不会自动切换等待光标。

返回:
一个布尔值,当前场景窗口的等待光标有效返回 true,否则返回 false。

getPanDatumPlane

public double getPanDatumPlane()
返回漫游基准面。单位为米。

漫游观察三维场景中高空物体时,物体偏移角度会随着其离地面的高度而增大,通过设置基准面,使其以基准面为参考平面进行漫游,可以减小这种偏移,便于观察。

返回:
漫游基准面。单位为米。
默认值:
默认值为0,单位为米。

setPanDatumPlane

public void setPanDatumPlane(double value)
设置漫游基准面。单位为米。

漫游观察三维场景中高空物体时,物体偏移角度会随着其离地面的高度而增大,通过设置基准面,使其以基准面为参考平面进行漫游,可以减小这种偏移,便于观察。

参数:
value - 漫游基准面。单位为米。

setWaitCursorEnabled

public void setWaitCursorEnabled(boolean value)
设置当前场景窗口的等待光标是否有效。为 true 时,在场景绘制等待时,系统会自动切换成等待光标,为 false 时,则不会自动切换等待光标。

参数:
value - 当前场景窗口的等待光标是否有效。

isCursorCustomized

public boolean isCursorCustomized()
返回当前场景控件的光标变化是否自定义。为 true 时,控件的光标完全由用户来控制,为 false 时,光标的变换由控件自己负责。

返回:
一个布尔值,当前场景控件的光标变化自定义返回 true,否则返回 false。

setCursorCustomized

public void setCursorCustomized(boolean value)
设置当前场景控件的光标变化是否自定义。为 true 时,控件的光标完全由用户来控制,为 false 时,光标的变换由控件自己负责。

参数:
value - 当前场景控件的光标变化是否自定义。

getInteractionMode

public InteractionMode3D getInteractionMode()
返回当前三维场景控件的互操作模式。

返回:
当前三维场景控件的互操作模式。

setInteractionMode

public void setInteractionMode(InteractionMode3D value)
设置当前三维场景控件的互操作模式。

通过该方法,可以实现在自定义鼠标、键盘的模式下与当前场景控件的交换操作。

参数:
value - 当前三维场景控件的互操作模式。

getEditableLayers

public Layer3D[] getEditableLayers()
返回三维场景窗口中的所有可编辑图层。

返回:
三维场景窗口中的可编辑图层数组。

doMouseDown

public void doMouseDown(java.awt.event.MouseEvent e)
当指针在三维场景控件上,用户按下鼠标按钮时,将执行 MouseDown 操作。

参数:
e - 执行操作需要的参数。

doMouseMove

public void doMouseMove(java.awt.event.MouseEvent e)
当用户移动鼠标指针经过三维场景控件时,将执行 MouseMove 操作。

参数:
e - 执行操作需要的参数。

doMouseUp

public void doMouseUp(java.awt.event.MouseEvent e)
当指针保持在控件上,用户释放鼠标按钮时,执行 MouseUp 操作。

参数:
e - 执行操作需要的参数。

doMouseWheel

public void doMouseWheel(java.awt.event.MouseWheelEvent e)
在鼠标滚轮转动时执行 MouseWheel 操作。

参数:
e - 执行操作需要的参数。

doKeyDown

public void doKeyDown(java.awt.event.KeyEvent e)
当焦点在控件上按下键时执行 KeyDown 操作。

参数:
e - 执行操作需要的参数。

addTrackingListener

public void addTrackingListener(Tracking3DListener l)
添加一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制事件(Tracking3DEvent)的监听器。

在三维场景窗口的跟踪图层中鼠标交互绘制几何对象时触发该三维场景窗口跟踪事件。

参数:
l - 一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制事件的监听器。

removeTrackingListener

public void removeTrackingListener(Tracking3DListener l)
移除一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制事件(Tracking3DEvent)的监听器。

在三维场景窗口的跟踪图层中鼠标交互绘制几何对象时触发该三维场景窗口跟踪事件。

参数:
l - 一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制事件的监听器。

addTrackedListener

public void addTrackedListener(Tracked3DListener l)
添加一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制结束事件(Tracked3DEvent)的监听器。

在三维场景窗口的跟踪图层中鼠标交互绘制几何对象结束时触发该三维场景窗口跟踪事件。

参数:
l - 一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制结束事件的监听器。

removeTrackedListener

public void removeTrackedListener(Tracked3DListener l)
移除一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制结束事件(Tracked3DEvent)的监听器。

在三维场景窗口的跟踪图层中鼠标交互绘制几何对象结束时触发该三维场景窗口跟踪事件。

参数:
l - 一个用于接收三维场景窗口的跟踪图层中鼠标交互绘制结束事件的监听器。

addObjectSelectedListener

public void addObjectSelectedListener(ObjectSelectedListener l)
添加一个用于接收对象被选中事件(ObjectSelectedEvent)的监听器。

参数:
l - 一个用于接收对象被选中事件的监听器。

removeObjectSelectedListener

public void removeObjectSelectedListener(ObjectSelectedListener l)
移除一个用于接收对象被选中事件(ObjectSelectedEvent)的监听器。

参数:
l - 一个用于接收对象被选中事件的监听器。

addActionChangedListener

public void addActionChangedListener(Action3DChangedEvent l)
添加一个用于三维场景控件操作状态改变事件(Action3DChangedEvent)的监听器。

参数:
l - 一个用于三维场景控件操作状态改变事件的监听器。

removeActionChangedListener

public void removeActionChangedListener(Action3DChangedEvent l)
移除一个用于三维场景控件操作状态改变事件(Action3DChangedEvent)的监听器。

参数:
l - 一个用于三维场景控件操作状态改变事件的监听器。

dispose

public void dispose()
释放该对象所占用的资源。当调用该方法之后,此对象不再可用。


isAlwaysUpdate

public boolean isAlwaysUpdate()
返回三维场景是否在失去焦点时停止更新数据。

返回:
一个布尔值,返回 true 时,表示失去焦点时不停止更新,返回 false时,表示失去焦时停止更新数据。

setAlwaysUpdate

public void setAlwaysUpdate(boolean value)
设置获三维场景是否在失去焦点时停止更新数据。

参数:
value - 一个布尔值,返回 true 时,表示失去焦点时不停止更新,返回 false时,表示失去焦时停止更新数据。

isDynamicSelection

public boolean isDynamicSelection()
获取当鼠标滑动时,场景对象是否动态高亮显示。

返回:
是否动态高亮显示。

setDynamicSelection

public void setDynamicSelection(boolean value)
设置当鼠标滑动时,场景对象是否动态高亮显示。

参数:
value - 指定是否动态高亮显示。

isStatusBarShowAltitude

public boolean isStatusBarShowAltitude()
获取状态条是否显示高度。

返回:
是否显示高度。

setStatusBarShowAltitude

public void setStatusBarShowAltitude(boolean value)
设置状态条是否显示高度。

参数:
value - 指定是否显示高度。

getSnapMode

public SnapMode3D getSnapMode()
获取三维场景中的模型对象支持顶点捕捉。

返回:

setSnapMode

public void setSnapMode(SnapMode3D value)
设置三维场景中的模型对象是否进行顶点捕捉。


isAlwaysActive

public boolean isAlwaysActive()
获取场景是否保持激活状态。

返回:

setAlwaysActive

public void setAlwaysActive(boolean alwaysActive)
设置场景是否保持激活状态。

参数:
alwaysActive -