com.supermap.realspace
类 Scene
- java.lang.Object
-
- com.supermap.realspace.Scene
-
public class Scene extends java.lang.Object
三维场景类。SuperMap iObjects Java 三维场景的主体是一个模拟地球的三维球体(SuperMap Objects Java 以半径为6378137 米的球体来模拟地球),该球体具有地理参考,球体上的点采用经纬度进行定位,并且可以通过三维场景提供的球体上的经纬网格,方便地浏览;同时,使用全球的遥感影像图作为背景覆盖在球体表面,增强三维球体模拟的逼真性;除此之外,三维场景还模拟了地球所处的环境,包括:宇宙的星空,地球的大气环境,地球表面的雾环境等。三维场景还提供了相机的设置,相机可以用来控制对球体的观测角度、方位和观测范围,从而以不同的视角呈现球体的不同部位。
各种三维数据将通过三维场景填加到三维场景的基本组织架构上,即三维数据会依据地理参考信息,填加到SuperMap Objects Java 提供的球体上。
-
-
构造器概要
构造器 构造器和说明 Scene()
-
方法概要
所有方法 实例方法 具体方法 限定符和类型 方法和说明 void
close()
关闭当前场景void
dispose()
释放该对象所占用的资源。int[]
drillPickforDynamicObject(java.lang.String objectName, Point point, int count)
拾取功能,支持输入屏幕坐标和拾取id层数,返回所有屏幕点下所有对象的id数组void
ensureVisible(Layer3D layer3d)
根据图层的中心块的经纬度范围显示场景void
ensureVisible(Rectangle2D visibleBounds)
根据经纬度范围显示场景。void
fly(LookAt lookAt)
根据指定的目标相机对象进行飞行。void
fly(LookAt lookAt, int milliseconds, boolean isdrct)
根据指定的目标相机对象和飞行时间进行飞行。void
flyCircle(Geometry geometry, double speedRatio)
围绕指定地点旋转飞行,飞行过程中可以控制飞行的速度。void
flyToCamera(Camera camera, int milliseconds, boolean isDirect)
根据指定的目标对象和高度模式进行飞行。void
flyToCamera(Camera camera, int altitudeMode, int milliseconds)
根据指定的目标对象、高度模式及飞行时间进行飞行。void
flyToPoint(Point3D point)
飞到指定的三维点位置。void
flyToPoint(Point3D point, int milliseconds)
根据目标点位置和飞行时间进行飞行。void
flytoVector(Point3D viewerPoint3D, Point3D targetPoint3D, int milliseconds)
定点观察,支持输入起始观察点和目标点,相机飞到观察点。boolean
getAtmosphereVisible()
获取大气状态的可见性。Camera
getCamera()
返回当前场景的相机对象。boolean
getCreateSkirt()
获取是否创建地形裙边。Camera
getFirstPersonCamera()
返回当前场景的第一人称视角相机参数。FlyManager
getFlyManager()
返回三维场景所关联的FlyManager 对象。double
getFPS()
获取当前场景的帧率,即帧/秒。GlobalImage
getGlobalImage()
返回全球底图对象。Layer3Ds
getLayers()
返回 3D 图层集合对象。LookAt
getLookAt()
获取当前场景的相机对象。MultiViewportMode
getMultiViewportMode()
获取当前场景的多视口模式。java.lang.String
getName()
获取当前三维场景名称。SceneType
getSceneType()
获取场景类型。TerrainLayers
getTerrainLayers()
返回三维场景中的地形图层集合。TrackingLayer3D
getTrackingLayer()
返回三维场景中的屏幕图层集合。java.lang.String
getUrl()
返回三维场景所关联的三维服务url路径。Workspace
getWorkspace()
返回三维场景所关联的工作空间。Point
globeToPixel(Point3D point)
将三维点对象转换成屏幕点对象。boolean
isZoomFlyPitching()
获取场景放大至地表时是否进行俯仰操作。boolean
open(java.lang.String sceneName)
打开工作空间中指定名称的三维场景。boolean
open(java.lang.String iserverUrl, java.lang.String sceneName)
打开已经使用iServer发布的三维服务中指定名称的三维场景。boolean
open(java.lang.String iserverUrl, java.lang.String sceneName, java.lang.String passWord)
打开已经从iServer发布的三维服务中下载的离线三维场景。boolean
openPrivateSceneWithUrl(java.lang.String onlineprivateURL, java.lang.String sceneName)
在登录SuperMap Online后,通过online数据私有服务打开三维场景。boolean
openTokenService(java.lang.String iserverUrl, java.lang.String strSceneName, java.lang.String token)
打开带有token令牌加密认证的数据服务 。android.graphics.Bitmap
outputSceneToBitmap()
将三维场景输出为位图对象。void
pan(double offsetLongitude, double offsetLatitude)
平移三维场景。Point3D
pixelToGlobe(Point point)
将屏幕点对象转换成三维点对象,该三维点对象包含了经纬度和海拔高度信息。Point3D
pixelToGlobe(Point point, PixelToGlobeMode mode)
将屏幕点对象转换成三维点对象。void
refresh()
刷新三维地图场景。void
sceneReset()
场景重置。void
setAtmosphereVisible(boolean atmosphereVisible)
设置大气状态可见性,通过设置大气模拟可增强三维场景真实感。void
setAutoLockOffset(Point3D value)
设置相机相对与锁定对象偏移量,可以在锁定目标对象时改变相机对象的x轴,y轴和z轴的偏移量,单位:米void
setAutoLockOffsetTilt(Point3D value, double tilt)
void
setCamera(Camera camera)
设置当前场景的相机对象。void
setCreateSkirt(boolean createSkirt)
设置是否创建地形裙边。void
setFirstPersonCamera(Camera camera)
设置当前场景的第一人称视角相机参数。void
setLookAt(LookAt lookAt)
设置当前场景的相机对象。void
setMultiViewportMode(MultiViewportMode multiViewportMode)
设置当前场景的多视口模式类型。void
SetOverlapDisplayed(boolean value)
设置压盖时是否显示。void
setPitch(double ratio)
以一定角度倾斜观察三维场景。void
setRollEye(double ratio)
三维场景绕视点旋转一定角度。void
setWorkspace(Workspace workspace)
设置三维场景所关联的工作空间。void
setZoomFlyPitching(boolean zoomFlyPitching)
设置场景放大至地表时是否开启俯仰操作。void
stopCameraInteria()
停止相机惯性。void
viewEntire()
全幅显示此场景。void
zoom(double ratio)
根据给定的缩放比例,对三维地图场景进行缩放操作。
-
-
-
方法详细资料
-
getCamera
public Camera getCamera()
返回当前场景的相机对象。Camera 相当于视点。- 返回:
- 当前场景的相机对象。
-
setCamera
public void setCamera(Camera camera)
设置当前场景的相机对象。Camera 相当于视点。- 参数:
camera
- 当前场景的相机对象。
-
getTerrainLayers
public TerrainLayers getTerrainLayers()
返回三维场景中的地形图层集合。- 返回:
- 三维场景中的地形图层集合。
-
getTrackingLayer
public TrackingLayer3D getTrackingLayer()
返回三维场景中的屏幕图层集合。- 返回:
- 三维场景中的屏幕图层集合。
-
getWorkspace
public Workspace getWorkspace()
返回三维场景所关联的工作空间。- 返回:
- 三维场景所关联的工作空间。
-
setWorkspace
public void setWorkspace(Workspace workspace)
设置三维场景所关联的工作空间。- 参数:
workspace
- 三维场景所关联的工作空间。
-
getLayers
public Layer3Ds getLayers()
返回 3D 图层集合对象。- 返回:
- 3D 图层集合对象。
-
flyToPoint
public void flyToPoint(Point3D point)
飞到指定的三维点位置。- 参数:
point
- 目标点位置。
-
flyToPoint
public void flyToPoint(Point3D point, int milliseconds)
根据目标点位置和飞行时间进行飞行。- 参数:
point
- 目标点位置。milliseconds
- 指定飞行到指定目标点位置所耗费的时间。单位为毫秒。
-
flyToCamera
public void flyToCamera(Camera camera, int milliseconds, boolean isDirect)
根据指定的目标对象和高度模式进行飞行。当目的地不在当前视野内时,isDirect 为 true 则直接飞过去,为 false 则先拉起再飞过去。
- 参数:
camera
- 指定的目标相机对象。milliseconds
- 指定的飞行时间。isDirect
- 决定是直接飞行过去还是先拉起再飞行过去。
-
flyToCamera
public void flyToCamera(Camera camera, int altitudeMode, int milliseconds)
根据指定的目标对象、高度模式及飞行时间进行飞行。- 参数:
camera
- 指定的目标相机对象。altitudeMode
- 指定的高度模式。milliseconds
- 指定相机飞行到指定目的地所耗费的时间。单位为毫秒。
-
dispose
public void dispose()
释放该对象所占用的资源。当调用该方法之后,此对象不再可用。
-
ensureVisible
public void ensureVisible(Layer3D layer3d)
根据图层的中心块的经纬度范围显示场景- 参数:
layer3d
- 三维图层对象。
-
getFlyManager
public FlyManager getFlyManager()
返回三维场景所关联的FlyManager 对象。- 返回:
- 三维场景所关联的FlyManager 对象。
-
ensureVisible
public void ensureVisible(Rectangle2D visibleBounds)
根据经纬度范围显示场景。- 参数:
visibleBounds
- 指定当前场景的可见范围。
-
getUrl
public java.lang.String getUrl()
返回三维场景所关联的三维服务url路径。- 返回:
- 三维场景所关联的三维服务url路径。
-
close
public void close()
关闭当前场景
-
open
public boolean open(java.lang.String sceneName)
打开工作空间中指定名称的三维场景。该指定名称为场景所关联的工作空间中的场景集合对象中的一个场景的名称。- 参数:
sceneName
- 场景名称。- 返回:
- 打开成功则返回 true,否则返回 false。
注意:打开工作空间中指定名称的三维场景需要配置许可。
-
open
public boolean open(java.lang.String iserverUrl, java.lang.String sceneName)
打开已经使用iServer发布的三维服务中指定名称的三维场景。场景名称是包含该服务中的一个场景的名称。- 参数:
iserverUrl
- 三维服务URL地址(如:http://118.186.246.138:8091/iserver/services/realspace-Scene/rest/realspace)。sceneName
- 场景名称。- 返回:
- 打开成功则返回 true,否则返回 false。
-
open
public boolean open(java.lang.String iserverUrl, java.lang.String sceneName, java.lang.String passWord)
打开已经从iServer发布的三维服务中下载的离线三维场景。- 参数:
iserverUrl
- 三维服务URL地址(如:http://118.186.246.138:8091/iserver/services/realspace-Scene/rest/realspace)。sceneName
- 场景名称。passWord
- 场景密码,默认密码是“supermap”。- 返回:
- 打开成功则返回 true,否则返回 false。
注意:离线文件的存放位置 位于设备默认存储目录/SuperMap/LocalData/ 文件夹中。
-
openTokenService
public boolean openTokenService(java.lang.String iserverUrl, java.lang.String strSceneName, java.lang.String token)
打开带有token令牌加密认证的数据服务 。- 参数:
iserverUrl
- 三维服务URL地址(如:http://118.186.246.138:8091/iserver/services/realspace-Scene/rest/realspace)。strSceneName
- 场景名称。token
- token令牌。- 返回:
- 打开成功则返回 true,否则返回 false。
-
viewEntire
public void viewEntire()
全幅显示此场景。
-
pixelToGlobe
public Point3D pixelToGlobe(Point point)
将屏幕点对象转换成三维点对象,该三维点对象包含了经纬度和海拔高度信息。 若屏幕点不在地球范围内则返回的三维点经纬度和高度为 Double.NaN,即不是数字的值。- 参数:
point
- 指定的屏幕点对象。- 返回:
- 转换后的三维点对象。
-
pixelToGlobe
public Point3D pixelToGlobe(Point point, PixelToGlobeMode mode)
将屏幕点对象转换成三维点对象。该方法可以用于判断所选择点位于模型之上或是地形之上。- 参数:
point
- 指定的屏幕点对象。mode
- 屏幕点对象转换为三维点对象的求交类型。- 返回:
- 转换后的三维点对象。
-
globeToPixel
public Point globeToPixel(Point3D point)
将三维点对象转换成屏幕点对象。当指定的三维点对象不在当前相机范围内的时候,改方法将返回(-1,-1),表示此点不可见。
- 参数:
point
- 指定的三维点对象,该点对象包含了经纬度和海拔高度信息。- 返回:
- 转换后的二维点对象。
-
outputSceneToBitmap
public android.graphics.Bitmap outputSceneToBitmap()
将三维场景输出为位图对象。- 返回:
- 位图对象。
-
refresh
public void refresh()
刷新三维地图场景。
-
getName
public java.lang.String getName()
获取当前三维场景名称。- 返回:
- 当前三维场景名称。
-
zoom
public void zoom(double ratio)
根据给定的缩放比例,对三维地图场景进行缩放操作。缩放比例的范围为负无穷大到1。当参数为(0,1)之间的数值时,场景按比例放大;参数值小于0时,场景按比例缩小,但缩小到一定程度后将不会再缩小。
- 参数:
ratio
- 指定的缩放比例数值。
-
stopCameraInteria
public void stopCameraInteria()
停止相机惯性。
-
flyCircle
public void flyCircle(Geometry geometry, double speedRatio)
围绕指定地点旋转飞行,飞行过程中可以控制飞行的速度。- 参数:
geometry
- 指定的目标几何对象。speedRatio
- 基准飞行速度的倍数,默认为1 。
-
getFirstPersonCamera
public Camera getFirstPersonCamera()
返回当前场景的第一人称视角相机参数。- 返回:
- 第一人称视角相机参数。
-
setFirstPersonCamera
public void setFirstPersonCamera(Camera camera)
设置当前场景的第一人称视角相机参数。- 参数:
camera
- 指定的第一人称相机参数。
-
pan
public void pan(double offsetLongitude, double offsetLatitude)
平移三维场景。- 参数:
offsetLongitude
- 指定的经向平移距离。offsetLatitude
- 指定的纬向平移距离。
-
sceneReset
public void sceneReset()
场景重置。打开在线场景后可调用该方法来重置场景,避免场景崩溃。
-
isZoomFlyPitching
public boolean isZoomFlyPitching()
获取场景放大至地表时是否进行俯仰操作。- 返回:
- 开启俯仰返回true,否则返回false.
-
setZoomFlyPitching
public void setZoomFlyPitching(boolean zoomFlyPitching)
设置场景放大至地表时是否开启俯仰操作。- 参数:
zoomFlyPitching
- 指定是否开启俯仰。
-
setMultiViewportMode
public void setMultiViewportMode(MultiViewportMode multiViewportMode)
设置当前场景的多视口模式类型。- 参数:
multiViewportMode
- 指定多视口模式类型。
-
getMultiViewportMode
public MultiViewportMode getMultiViewportMode()
获取当前场景的多视口模式。- 返回:
- 场景的多视口模式。
-
getGlobalImage
public GlobalImage getGlobalImage()
返回全球底图对象。- 返回:
- 全球底图对象。
-
getAtmosphereVisible
public boolean getAtmosphereVisible()
获取大气状态的可见性。- 返回:
- 大气状态可见性。
-
setAtmosphereVisible
public void setAtmosphereVisible(boolean atmosphereVisible)
设置大气状态可见性,通过设置大气模拟可增强三维场景真实感。- 参数:
atmosphereVisible
- 指定大气状态可见性。
-
setCreateSkirt
public void setCreateSkirt(boolean createSkirt)
设置是否创建地形裙边。当TIN地形存在裂缝时,创建裙边可避免显示裂缝,能够提升TIN地形效果。- 参数:
createSkirt
- 指定是否创建地形裙边。
-
getCreateSkirt
public boolean getCreateSkirt()
获取是否创建地形裙边。当TIN地形存在裂缝时,创建裙边可避免显示裂缝,能够提升TIN地形效果。- 返回:
- 是否创建地形裙边,指定创建返回true,否则返回false。
-
openPrivateSceneWithUrl
public boolean openPrivateSceneWithUrl(java.lang.String onlineprivateURL, java.lang.String sceneName)
在登录SuperMap Online后,通过online数据私有服务打开三维场景。- 参数:
onlineprivateURL
- 指定登录后可获取的私有服务网址。sceneName
- 指定登录后可获取的私有服务场景名称。- 返回:
- 打开成功返回true,否则返回false。
-
setPitch
public void setPitch(double ratio)
以一定角度倾斜观察三维场景。- 参数:
ratio
- 指定倾斜的角度。
-
setRollEye
public void setRollEye(double ratio)
三维场景绕视点旋转一定角度。- 参数:
ratio
- 指定旋转的角度。
-
fly
public void fly(LookAt lookAt)
根据指定的目标相机对象进行飞行。- 参数:
lookAt
- 指定的目标LookAt相机。
-
fly
public void fly(LookAt lookAt, int milliseconds, boolean isdrct)
根据指定的目标相机对象和飞行时间进行飞行。- 参数:
lookAt
- 指定的目标LookAt相机milliseconds
- 指定的飞行时间。isdrct
- 决定是直接飞行过去还是先拉起再飞行过去.
-
setLookAt
public void setLookAt(LookAt lookAt)
设置当前场景的相机对象。- 参数:
lookAt
- 指定的LookAt相机。
-
getLookAt
public LookAt getLookAt()
获取当前场景的相机对象。- 返回:
- lookAt 指定的LookAt相机。
-
SetOverlapDisplayed
public void SetOverlapDisplayed(boolean value)
设置压盖时是否显示。- 参数:
value
- 决定压盖时是否显示,一个boolean值。
-
getFPS
public double getFPS()
获取当前场景的帧率,即帧/秒。该数值通常用于判断三维场景的显示效率。- 返回:
- 当前场景的帧率。
-
flytoVector
public void flytoVector(Point3D viewerPoint3D, Point3D targetPoint3D, int milliseconds)
定点观察,支持输入起始观察点和目标点,相机飞到观察点。- 参数:
viewerPoint3D
- 指定的三维观察点。targetPoint3D
- 指定的三维目标点。milliseconds
- 指定的飞行时间。
-
getSceneType
public SceneType getSceneType()
获取场景类型。- 返回:
- SceneType 场景类型。
-
drillPickforDynamicObject
public int[] drillPickforDynamicObject(java.lang.String objectName, Point point, int count)
拾取功能,支持输入屏幕坐标和拾取id层数,返回所有屏幕点下所有对象的id数组
-
setAutoLockOffset
public void setAutoLockOffset(Point3D value)
设置相机相对与锁定对象偏移量,可以在锁定目标对象时改变相机对象的x轴,y轴和z轴的偏移量,单位:米
-
setAutoLockOffsetTilt
public void setAutoLockOffsetTilt(Point3D value, double tilt)
- 参数:
value
-tilt
-
-
-