public class Layer3D
extends com.supermap.data.InternalHandle
该类提供了三维图层显示和控制等便于三维地图管理的一系列设置方法。
三维图层种类有以下几种:数据集类型三维图层、地图类型三维图层、KML 类型三维图层、影像文件类型三维图层、模型缓存类型三维图层和矢量文件图层。各种类型三维图层可以叠加在一起显示。
三维图层类提供了对三维图层的显示、选择等状态的控制,可以实现控制图层是否可选择,是否显示,还可以利用该类提供的方法返回图层中被选择的对象集合等。
public void TestLayer3D() { //返回三维场景窗口的三维场景对象,并进行三维场景的设置 SceneControl sceneControl = new SceneControl(); Scene sceneObject = sceneControl.getScene(); sceneObject.getAtmosphere().setVisible(true); //将已有的KML文件添加到三维场景中,作为KML图层显示在三维场景窗口中 Layer3D layerKML = sceneObject.getLayers().add("G:\\Data\\KML.kml", Layer3DType.KML, true); //对KML类型的三维图层进行设置 layerKML.setCaption("KMLlayer3D"); layerKML.setDescription("示范三维图层的相关操作"); layerKML.setEditable(false); layerKML.setSelectable(false); layerKML.setVisible(true); String layerName = layerKML.getName(); //向该三维图层中添加三维要素 //geoCone.getGeoModel接口引用其父类GeoMetry3D的getGeoModel,不影响使用。 Point3D point3D = new Point3D(102, 31, 0); GeoCone geoCone = new GeoCone(point3D, 800, 800); GeoModel geoModel = geoCone.getGeoModel(80, 80); GeoPlacemark geoPlacemark = new GeoPlacemark("圆锥体", geoModel); //GeoPlacemark geoPlacemark = new GeoPlacemark("Cone", geoModel); layerKML.getFeatures().add(geoPlacemark); //根据指定的飞行模式,飞行到目标对象 sceneControl.getScene().flycircle(geoPlacemark, 2.0); sceneObject.refresh(); //释放占用的资源 sceneControl.dispose(); }
限定符和类型 | 方法和说明 |
---|---|
void |
clearCustomClipPlane()
清除裁剪面。
|
void |
clipByBox(GeoBox box,
BoxClipPart part)
根据指定的长方体盒子和裁剪区域对图层的可渲染部分进行裁剪。
|
boolean |
fromXML(String xml)
通过 XML 数据创建三维图层对象。
|
double |
getAlphaReject()
获取OSGB及模型数据集图层Alpha透明过滤属性 。
|
Rectangle2D |
getBounds()
返回图层的范围。
|
BoxClipPart |
getBoxClipPart()
返回裁剪分析所指定的裁剪区域类型。
|
String |
getCaption()
返回三维图层的标题。
|
GeoBox |
getClipBox()
返回用于裁剪的长方体对象。
|
Color |
getClipLineColor() |
GeoRegion3D |
getCustomClipCross()
获取区域裁剪面。
|
ArrayList<Point3D> |
getCustomClipPlane() |
String |
getDataName()
返回图层所使用数据的名称。
|
String |
getDescription()
返回三维图层的描述信息。
|
EditFeature |
getEditFeature()
三维矢量数据获取顶点编辑。
|
String |
getExtendXML()
返回该图层扩展XML信息
|
Feature3Ds |
getFeatures()
返回树状结构的三维要素集合对象。
|
int |
getFilterPixelSize()
返回三维图层中模型显示的像素过滤阈值。
|
MapServiceType |
getMapServiceType()
返回3D网络图层数据的服务类型。
|
double |
getMaxObjectVisibleDistance()
返回该三维图层内模型对象的最大可见距离值。
|
double |
getMaxVisibleAltitude()
返回三维图层的最大可见高度。
|
double |
getMinObjectVisibleDistance()
返回该三维图层内模型对象的最小可见距离值。
|
double |
getMinVisibleAltitude()
返回三维图层的最小可见高度。
|
MixColorType |
getMixColorType() |
String |
getName()
返回三维图层的名称。
|
Layer3DGroup |
getParentGroup()
获取图层的父图层组。
|
Layer3D |
getParentLayer()
返回图层的父图层。
|
String |
getPassword() |
boolean |
getReceiveSunLight()
获取三维图层是否接收光照。
|
boolean |
getReleaseWhenInvisible() |
Selection3D |
getSelection()
返回三维图层的选择集。
|
ShadowType |
getShdowType()
返回图层中模型参与显示阴影的范围类型。
|
boolean |
getSnap()
获取三维图层是否开启顶点捕捉。
|
Rectangle2D |
getSwipeRegion()
返回三维图层开启卷帘的区域。
|
Layer3DType |
getType()
返回三维图层的类型。
|
double |
getVisibleDistance()
已过时。
|
boolean |
getVisibleInViewport(short index)
返回当前三维图层在指定视口的可见性。
|
boolean |
hasLocalCache() |
boolean |
isAlwaysRender()
已过时。
|
boolean |
isChangedToLayerStyle()
已过时。
|
boolean |
isDisposed()
返回对象是否已被释放。
|
boolean |
isEditable()
返回该三维图层对象是否可编辑。
|
boolean |
isSelectable()
返回三维图层中的对象是否可以选择。
|
boolean |
isShadowEnable()
返回三维图层的阴影是否可见。
|
boolean |
isSketchMode()
返回是否以草图模式来绘制此图层。
|
boolean |
isSwipeEnable()
返回三维图层是否开启卷帘功能。
|
boolean |
isVisible()
返回该三维图层是否可显示。
|
boolean |
isWebDatasource()
返回该图层的数据源是否是web服务数据源。
|
void |
setAlphaReject(double value)
设置OSGB及模型数据集图层Alpha透明过滤属性 。
|
void |
setAlwaysRender(boolean value)
已过时。
|
void |
setCaption(String value)
设置三维图层的标题。
|
void |
setChangedToLayerStyle(boolean value)
已过时。
|
void |
setClipLineColor(Color value) |
void |
setCustomClipCross(Point3D position,
Point2D dimension,
double rotX,
double rotY,
double rotZ,
double extrudeDistance)
设置自定义四边形裁剪。
|
void |
setCustomClipPlane(Point3D firstPoint,
Point3D secondPoint,
Point3D thirdPoint)
裁剪面分析,按顺序设置三个顶点的位置,裁剪面分析的结果指只显示该面法线方向的部分,法线遵循右手法则,逆时针法线朝上,顺时针法线朝下,分析结果只显示大拇指方向上的模型结构。
|
void |
setDescription(String value)
设置三维图层的描述信息。
|
void |
setEditable(boolean value)
设置该三维图层对象是否可编辑。
|
void |
setFilterPixelSize(int value)
设置三维图层中模型显示的像素过滤阈值。
|
void |
setLocalCache(boolean enable)
设置或获取网络数据是否保存到本地
|
void |
setMaxObjectVisibleDistance(double value)
设置该三维图层内模型对象的最大可见距离值。
|
void |
setMaxVisibleAltitude(double value)
设置三维图层的最大可见高度。
|
void |
setMinObjectVisibleDistance(double value)
设置该三维图层内模型对象的最小可见距离值。
|
void |
setMinVisibleAltitude(double value)
设置三维图层的最小可见高度。
|
void |
setMixColorType(MixColorType value) |
void |
setParentGroup(Layer3DGroup parentGroup)
设置图层的父图层组。
|
boolean |
setParentLayer(Layer3D layer)
指定图层父子关系的图层的接口
|
void |
setReceiveSunLight(boolean value)
设置三维图层是否接收光照。
|
void |
setReleaseWhenInvisible(boolean isRelease)
获取或设置三维图层不可见时是否自动释放资源。
|
void |
setSelectable(boolean value)
设置三维图层中的对象是否可以选择。
|
void |
setSelection(Selection3D selection3d)
设置三维图层的选择集。
|
void |
setShadowEnable(Boolean value)
设置三维图层的阴影是否可见。
|
void |
setShadowType(ShadowType type)
设置图层中模型参与显示阴影的范围类型。
|
void |
setSkecthMode(boolean value)
已过时。
|
void |
setSketchMode(boolean value)
设置是否以草图模式来绘制此图层。
|
void |
setSnap(boolean value)
设置三维图层是否开启顶点捕捉。
|
void |
setSwipeEnable(boolean enable)
设置三维图层是否开启卷帘功能。
|
void |
setSwipeRegion(Rectangle2D rec)
设置三维图层开启卷帘的区域。
|
void |
setVisible(boolean value)
设置该三维图层是否可显示。
|
void |
setVisibleDistance(double value)
已过时。
|
void |
setVisibleInViewport(short index,
boolean visible)
设置当前三维图层在指定视口的可见性。
|
String |
toXML()
返回三维图层的的 XML 形式的描述。
|
void |
updateData()
更新渲染所需要的数据。
|
public String getName()
三维图层的名称在三维图层所在的三维地图中唯一标识此图层。该标识不区分大小写。
public String getCaption()
三维图层的标题为该图层的显示名称,例如在图例或排版制图时显示的图层的名称即为图层的标题。注意与三维图层的名称相区别。
public void setCaption(String value)
三维图层的标题为该图层的显示名称,例如在图例或排版制图时显示的图层的名称即为图层的标题。注意与三维图层的名称相区别。
value
- 三维图层的标题。public String getDescription()
public void setDescription(String value)
value
- 三维图层的描述信息。public Layer3DType getType()
Layer3DType
类。public Feature3Ds getFeatures()
下图为一个三维要素集合(Feature3Ds
),由图可以看出三维要素集合包括两个部分,一个是三维要素集合的子对象(即树的分枝及枝上的叶子),另一个是三维要素对象(主枝干上的叶子)。每个叶子就是一个三维要素(Feature3D
)对象。
1是主干,2、3、4均是枝干。
public boolean isSelectable()
public EditFeature getEditFeature()
public void setSelectable(boolean value)
value
- 一个布尔值指定三维图层中的对象是否可以选择。public boolean isEditable()
public void setEditable(boolean value)
value
- 一个布尔值,该三维图层对象是否可编辑。true 表示该三维图层可编辑,false 表示不可编辑。public boolean isVisible()
@Deprecated public void setAlwaysRender(boolean value)
public boolean isSketchMode()
使用场景:如果用户不需要显示纹理,通过设置此方法可以提高绘制效率,降低占用的内存。
目前该方法只对Layer3DDataset(数据集类型三维图层)和 Layer3DVectorFile(矢量文件图层)起作用,并且只对模型或者拉伸面保存为CAD的模型起作用,包括数据集和缓存。
@Deprecated public void setSkecthMode(boolean value)
public void setSketchMode(boolean value)
使用场景:如果用户不需要显示纹理,通过设置此方法可以提高绘制效率,降低占用的内存。
目前该方法只对 Layer3DDataset(数据集类型三维图层)和 Layer3DVectorFile(矢量文件图层)起作用,并且只对模型或者拉伸面保存为CAD的模型起作用,包括数据集和缓存。
value
- 是否以草图模式来绘制此图层。@Deprecated public boolean isAlwaysRender()
public void setVisible(boolean value)
value
- 一个布尔值指定三维图层是否可显示。public int getFilterPixelSize()
此阈值用于对三维图层中的模型对象的显示过滤,屏幕像素值低于此值的模型对象将不会显示。
像素过滤(get/setFilterPixelSize)和距离过滤(get/setMaxObjectVisibleDistance,get/setMinObjectVisibleDistance)都会对模型对象的可见进行过滤,在实现的过程中,先根据距离过滤进行判断,再根据像素过滤进行判断。
这两种过滤功能仅针对模型对象、SCV以及数据集有效。
public void setFilterPixelSize(int value)
此阈值用于对三维图层中的模型对象的显示过滤,屏幕像素值低于此值的模型或矢量对象将不会显示。此阈值设置为0时,表示像素过滤功能未开启。
像素过滤(get/setFilterPixelSize)和距离过滤(get/setMaxObjectVisibleDistance,get/setMinObjectVisibleDistance)都会对模型对象的可见进行过滤,在实现的过程中,先根据距离过滤进行判断,再根据像素过滤进行判断。因此,此阈值的数值需要根据屏幕当前的分辨率大小以及相机距离图层的高度来综合考虑。
这两种过滤功能仅针对模型对象、SCV以及数据集有效。
value
- 三维图层中模型显示的像素过滤阈值,单位是屏幕像素。@Deprecated public void setChangedToLayerStyle(boolean value)
@Deprecated public boolean isChangedToLayerStyle()
public boolean isDisposed()
public Selection3D getSelection()
Selection3D
类。public void setSelection(Selection3D selection3d)
Selection3D
类。selection3d
- 三维图层的选择集。@Deprecated public double getVisibleDistance()
@Deprecated public void setVisibleDistance(double value)
public double getMaxVisibleAltitude()
public void setMaxVisibleAltitude(double value)
value
- 三维图层的最大可见高度。public double getMinVisibleAltitude()
public void setMinVisibleAltitude(double value)
value
- 三维图层的最小可见高度。public double getMaxObjectVisibleDistance()
像素过滤(get/setFilterPixelSize)和距离过滤(get/setMaxVisibleDistance,get/setMinObjectVisibleDistance)都会对模型对象的可见进行过滤,在实现的过程中,先根据距离过滤进行判断,再根据像素过滤进行判断。
这两种过滤功能仅针对模型对象、SCV以及数据集有效。
public void setMaxObjectVisibleDistance(double value)
像素过滤(get/setFilterPixelSize)和距离过滤(get/setMaxVisibleDistance,get/setMinObjectVisibleDistance)都会对模型对象的可见进行过滤,在实现的过程中,先根据距离过滤进行判断,再根据像素过滤进行判断。
这两种过滤功能仅针对模型对象、SCV以及数据集有效。
value
- 三维图层的模型对象最大可见距离值。单位为米。该距离值用于距离过滤功能,当相机与图层内的模型对象距离大于该距离值时,该三维图层内的模型对象将不可见。public double getMinObjectVisibleDistance()
像素过滤(get/setFilterPixelSize)和距离过滤(get/setMaxObjectVisibleDistance,get/setMinObjectVisibleDistance)都会对模型对象的可见进行过滤,在实现的过程中,先根据距离过滤进行判断,再根据像素过滤进行判断。
这两种过滤功能仅针对模型对象、SCV以及数据集有效。
public void setMinObjectVisibleDistance(double value)
像素过滤(get/setFilterPixelSize)和距离过滤(get/setMaxObjectVisibleDistance,get/setMinObjectVisibleDistance)都会对模型对象的可见进行过滤,在实现的过程中,先根据距离过滤进行判断,再根据像素过滤进行判断。
这两种过滤功能仅针对模型对象、SCV以及数据集有效。
value
- 三维图层内模型对象的最小可见距离值。单位为米。public Rectangle2D getBounds()
对于KML图层,该方法返回全球范围{ -180, 90, 180, -90}。
public void updateData()
在以下情况需要调用该方法才能正确渲染更新后的数据:在调用了 GeoStyle3D.setAltitudeMode()
方法时。
public String getDataName()
如果数据直接来源于文件,此时为文件的全路径名 ,来源于数据集时,名称为DatasetName@DatasourceAlias ,如果数据直接来源于Map时该名字为地图名称。
public String getPassword()
public boolean isShadowEnable()
public void setShadowEnable(Boolean value)
目前该方法只对 Layer3DDataset(数据集类型三维图层)和 Layer3DVectorFile(矢量文件图层)起作用,并且对图层中的数据还有要求,对于数据集类型的三维图层(Layer3DDataset),图层对应的必须是模型数据集或设置了拉伸高度的线、面类型的数据集;对于矢量缓存图层(Layer3DVectorFile),图层的数据类型必须是模型缓存或设置了拉伸高度的线、面类型的矢量缓存。
public boolean isWebDatasource()
public MapServiceType getMapServiceType()
MapServiceType
类。public boolean fromXML(String xml)
xml
- XML 数据。public String toXML()
public String getExtendXML()
public void setReleaseWhenInvisible(boolean isRelease)
isRelease
- public boolean getReleaseWhenInvisible()
public void setShadowType(ShadowType type)
type
- 模型参与显示阴影的范围类型。public ShadowType getShdowType()
public boolean setParentLayer(Layer3D layer)
layer
- public Layer3D getParentLayer()
public void setVisibleInViewport(short index, boolean visible)
index
- 指定的视口索引。visible
- 指定可见性,true表示可见,false表示不可见。public boolean getVisibleInViewport(short index)
index
- 指定的视口索引。public void clipByBox(GeoBox box, BoxClipPart part)
box
- 指定的长方体盒子。part
- 指定裁剪区域。public void clearCustomClipPlane()
public void setCustomClipPlane(Point3D firstPoint, Point3D secondPoint, Point3D thirdPoint)
此设置可用clearCustomClipPlane方法清除。
firstPoint
- 指定裁剪面的第一个顶点。secondPoint
- 指定裁剪面的第二个顶点。thirdPoint
- 指定裁剪面的第三个顶点。public void setSwipeEnable(boolean enable)
enable
- 指定是否开启卷帘功能。public boolean isSwipeEnable()
public Rectangle2D getSwipeRegion()
public void setSwipeRegion(Rectangle2D rec)
rec
- 指定开启卷帘的区域。public void setLocalCache(boolean enable)
public boolean hasLocalCache()
public Layer3DGroup getParentGroup()
public void setParentGroup(Layer3DGroup parentGroup)
parentGroup
- 指定的图层组。public boolean getSnap()
public void setSnap(boolean value)
value
- 指定是否开启顶点捕捉。public boolean getReceiveSunLight()
public void setReceiveSunLight(boolean value)
value
- 指定是否接收光照。public double getAlphaReject()
public void setAlphaReject(double value)
value
- 指定的Alpha透明过滤值。public GeoBox getClipBox()
public BoxClipPart getBoxClipPart()
public GeoRegion3D getCustomClipCross()
public void setCustomClipCross(Point3D position, Point2D dimension, double rotX, double rotY, double rotZ, double extrudeDistance)
position
- 指定区域裁剪的中心点。dimension
- 一个二维点,单位是米。X、Y作为裁剪面的长和宽。rotX
- 裁剪面沿X轴旋转角度。rotY
- 裁剪面沿Y轴旋转角度。rotZ
- 裁剪面沿Z轴旋转角度。extrudeDistance
- 拉伸高度,以起始面作为拉伸参考面,朝法线方向拉伸。public Color getClipLineColor()
public void setClipLineColor(Color value)
public MixColorType getMixColorType()
public void setMixColorType(MixColorType value)
Copyright © 2021–2024 SuperMap. All rights reserved.