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)
      根据给定的缩放比例,对三维地图场景进行缩放操作。
      • 从类继承的方法 java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 构造器详细资料

      • Scene

        public Scene()
    • 方法详细资料

      • 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 -