public class MapLayout
extends com.supermap.data.InternalHandleDisposable
布局就是地图、地图比例尺、指北针、文本等各种不同地图内容的混合排版与布置,主要用于电子地图和打印地图。布局窗口,即 MapLayoutControl 类,用于布局的显示窗口,提供布局中各类元素的可视化编辑与操作,同时布局还提供了诸如格网、刻度尺、标尺线等辅助要素,帮助布局中各个元素的位置与大小的定位;布局还提供了标准图幅图框,制作出标准的、科学的地图版面。
另外,布局还可以输出成各种格式(BMP、JPG、PNG、EMP、PDF)的图片以及进行打印,并且提供了方便灵活的页面设置。
布局可以保存在与之关联的工作空间中,通过工作空间中的布局集合,即Workspace
类的 getLayouts()
方法获取和管理工作空间中存储的布局对象。
如下图所示,为一个布局窗口,窗口中显示了一个布局对象。
下面主要介绍布局的基本构成以及布局中的坐标关系。
如下图所示,为布局窗口中显示的布局对象,布局窗口主要是布局对象显示的容器,提供了水平和垂直滚动条。布局对象包含了用于度量和定位的刻度尺、用来进行布局排版的纸面、可以添加到布局中的布局元素(地图对象、比例尺、指北针以及其他几何对象)。
布局的坐标单位为逻辑单位,即0.1毫米,也就是说在布局中屏幕坐标的一个单位为0.1毫米。当向布局中添加布局元素时,布局元素放置的位置坐标以及元素的尺寸单位均使用逻辑单位。例如:若将Element1元素放置到布局中(1200,1200)位置处时,实际是放置在距纸面原点(下图中绿色小圆点所示)(120mm,120mm)的位置处。
布局中的纸面对象,如下图所示,纸面对象的大小可以设置,下图的纸面大小为B5型号纸张的大小(182*257mm),下图中绿色的小圆点表示纸面的原点位置,即纸面尺寸量算的起始点,纸面的原点始终位于布局中(0,0)坐标点的位置;纸面原点到纸面边缘的垂直和水平距离(下图中橘黄色双箭头所示)分别为纸面的垂直和水平页边距。
限定符和类型 | 方法和说明 |
---|---|
void |
addDrawingListener(MapLayoutDrawingListener l)
添加一个用于接收布局绘制操作事件(
MapLayoutDrawingEvent )的监听器。 |
void |
addDrawnListener(MapLayoutDrawnListener l)
添加一个用于接收布局绘制结束事件(
MapLayoutDrawnEvent )的监听器。 |
boolean |
adjustLayoutPaperSize()
设置布局页面(不包括页边距)适应布局中所有几何对象的范围,即将布局页面大小调整为布局中所有几何对象的最小外接矩形范围的大小。
|
void |
clearSelection()
清除选择集
|
void |
close()
关闭当前布局。
|
void |
dispose()
释放该对象所占用的资源。
|
boolean |
ensureVisible(Rectangle2D rectangle2D)
在指定的范围内,全幅显示布局对象,即:将布局对象在指定的范围内,居中显示在此地图布局控件中。
|
boolean |
fromXML(String xml)
通过 XML 字符串创建布局对象。
|
GeoStyle |
getBackgroundStyle()
返回布局的背景风格。
|
Rectangle2D |
getBounds()
返回布局空间范围。
|
Point2D |
getCenter()
返回布局中心点。
|
LayoutElements |
getElements()
返回布局对象中的布局元素集合。
|
String |
getExternalXML()
获取扩展XML内容
|
int |
getHorizontalPaperCount()
返回设置布局包含的横向页面纸张数。
|
Dimension |
getImageSize()
返回将布局输出为图片时的图片大小。
|
double |
getMaxZoomRatio()
返回布局的最大缩放比例。
|
double |
getMinZoomRatio()
返回布局的最小缩放比例。
|
String |
getName()
返回布局对象的名称。
|
int |
getOverlapLengthOfPrinterPaper()
返回分页出图时页面重叠部分的长度。
|
Paper |
getPaper()
返回页面纸张对象。
|
Printer |
getPrinter()
已过时。
11.2.0 已废弃
|
boolean |
getPrintPreview()
已过时。
11.2.0 已废弃
|
Ruler |
getRuler()
返回布局中的标尺。
|
RulerLines |
getRulerLines()
已过时。
11.2.0 已废弃
|
RulerSetting |
getRulerSetting()
返回刻度尺设置对象。
|
LayoutSelection |
getSelection()
返回布局的选择集,通过该方法可以返回布局中被选中的对象的集合。
|
int |
getVerticalPaperCount()
返回布局包含的纵向页面纸张数。
|
Rectangle2D |
getViewBounds()
返回布局可见空间范围。
|
Workspace |
getWorkspace()
返回布局对象对应的工作空间。
|
double |
getZoomRatio()
返回布局当前的缩放比例。
|
LayoutSelection |
hitTest(Point2D pt,
double tolerance)
返回选中的布局元素的集合。
|
boolean |
isLineAntialias()
返回是否布局线型反走样显示。
|
boolean |
isModified()
返回是否布局被修改过。
|
boolean |
isOutputWithHeaderFooter()
返回在打印时是否绘制页眉页脚范围(不包括打印为PDF,打印为PDF始终绘制页眉页脚范围)。
|
boolean |
isOverlapDisplayed()
返回压盖时是否显示,这里的压盖,目前包含文本与文本压盖,统计图与统计图的压盖。
|
boolean |
isSymbolScalable()
返回布局的符号大小是否随图缩放。
|
boolean |
isTextAntialias()
返回是否布局文字反走样显示。
|
Point2D |
layoutToLogical(Point2D point)
将指定点的布局坐标转换为逻辑坐标。
|
Point |
layoutToPixel(Point2D point)
将布局坐标转换成像素坐标。
|
boolean |
loadTemplate(String templateName)
加载布局模板文件。
|
Point2D |
logicalToLayout(Point2D point)
将指定点的逻辑坐标转换为布局坐标。
|
Point |
logicalToPixel(Point2D point)
将指定点的逻辑坐标转换为屏幕坐标。
|
boolean |
open(String name)
打开工作空间中已存在的布局,并将其显示在布局窗口中。
|
BufferedImage |
outputLayoutToBitmap()
将布局窗口中可见范围的内容输出为内存图片文件。
|
boolean |
outputLayoutToBMP(String fileName,
int dpi)
导出布局至 BMP 文件。
|
boolean |
outputLayoutToEMF(String fileName)
将布局窗口中可见范围的内容输出为 EMF 文件。
|
boolean |
outputLayoutToEPS(String fileName)
将布局窗口中可见范围的内容输出为 EPS 文件。
|
boolean |
outputLayoutToGIF(String fileName,
boolean isBackTransparent)
将布局窗口中可见范围的内容输出为可交换图像文件(GIF 格式文件)。
|
boolean |
outputLayoutToJPG(String fileName)
将布局窗口中可见范围的内容输出为 JPG 文件。
|
boolean |
outputLayoutToJPG(String fileName,
int dpi,
int compress)
将布局窗口中可见范围的内容输出为 JPG 文件。
|
boolean |
outputLayoutToPNG(String fileName,
boolean isBackTransparent)
将布局窗口中可见范围的内容输出为 PNG 文件。
|
void |
pan(double offsetX,
double offsetY)
平移布局对象。
|
Point2D |
pixelToLayout(Point point)
将像素坐标转换成布局坐标。
|
Point2D |
pixelToLogical(Point point)
将指定点的屏幕坐标转换为逻辑坐标。
|
boolean |
printToFile(String fileName,
PrintFileType type,
int dpi)
将布局纸面范围的内容全部输出到文件。
|
boolean |
printToFile(String fileName,
PrintFileType type,
int dpi,
boolean isMultiPageWithPrinterPaper)
将布局纸面范围的内容全部输出到图片文件或者PDF文件。
|
void |
refresh()
刷新布局。
|
void |
refreshGeoMap(int geoMapID)
刷新指定ID的地图对象
|
void |
removeDrawingListener(MapLayoutDrawingListener l)
移除一个用于接收布局绘制操作事件(
MapLayoutDrawingEvent )的监听器。 |
void |
removeDrawnListener(MapLayoutDrawnListener l)
移除一个用于接收布局绘制结束事件(
MapLayoutDrawnEvent )的监听器。 |
boolean |
saveAsTemplate(String templateName)
另存为布局模板文件。
|
void |
setBackgroundStyle(GeoStyle style)
设置布局的背景风格。
|
void |
setCenter(Point2D point2D)
设置布局中心点。
|
void |
setExternalXML(String externalXML)
设置扩展XML内容
|
void |
setHorizontalPaperCount(int value)
设置设置布局包含的横向页面纸张数。
|
void |
setImageSize(Dimension size)
设置将布局输出为图片时的图片大小。
|
void |
setLineAntialias(boolean value)
设置是否布局线型反走样显示。
|
void |
setMaxZoomRatio(double value)
设置布局的最大缩放比例。
|
void |
setMinZoomRatio(double value)
设置布局的最小缩放比例。
|
void |
setModified(boolean value)
设置是否布局被修改过。
|
void |
setName(String name)
设置布局对象的名称。
|
void |
setOutputWithHeaderFooter(boolean value)
设置在打印时是否绘制页眉页脚范围(不包括打印为PDF,打印为PDF始终绘制页眉页脚范围)。
|
void |
setOverlapDisplayed(boolean value)
设置压盖时是否显示,这里的压盖,目前包含文本与文本压盖,统计图与统计图的压盖。
|
void |
setOverlapLengthOfPrinterPaper(int value)
设置分页出图时页面重叠部分的长度,便于拼接。
|
void |
setPreLoadWebCache(int seconds)
设置布局显示和出图时预先加载Web缓存图层的时间,单位为秒,默认为6秒。
|
void |
setPrintPreview(boolean value)
已过时。
11.2.0 已废弃
|
void |
setSelection(LayoutSelection layoutSelection)
设置布局的选择集,通过该方法可以设置布局中被选中的对象的集合。
|
void |
setSymbolScalable(boolean value)
设置布局的符号大小是否随图缩放。
|
void |
setTextAntialias(boolean value)
设置是否布局文字反走样显示。
|
void |
setVerticalPaperCount(int value)
设置布局包含的纵向页面纸张数。
|
void |
setViewBounds(Rectangle2D rectangle2D)
设置布局可见空间范围。
|
void |
setWorkspace(Workspace workspace)
设置布局对象对应的工作空间。
|
void |
setZoomRatio(double value)
设置布局当前的缩放比例。
|
String |
toXML()
返回布局对象的 XML 形式的描述信息。
|
void |
zoom(double ratio)
按照缩放比例缩放页面,缩放后的比例尺为原比例尺与缩放比例的乘积。
|
void |
zoomToPaper()
缩放页面使之充满布局窗口。
|
void |
zoomToPaperHeight()
按页面高度缩放页面使之充满窗口,即:页面的高度等于窗口的高度。
|
void |
zoomToPaperWidth()
按页面宽度缩放页面使之充满布局窗口,即:页面的宽度等于窗口的宽度。
|
public MapLayout()
public MapLayout(Workspace workspace)
workspace
- 工作空间对象。public String getName()
public void setName(String name)
name
- 指定的布局对象名称。public Paper getPaper()
下图为一个布局窗口,窗口中显示了一个布局对象。黑色双箭头指示的就是布局的页面纸张对象。
Paper
对象。@Deprecated public Printer getPrinter()
Printer
对象。public Ruler getRuler()
@Deprecated public RulerLines getRulerLines()
所谓布局中的标尺线,就是如下图所示的一系列水平和垂直的线条,标尺线是有一种辅助布局排版的工具,在应用中可以使用任意多个标尺线,将它们放置在布局中需要的位置,进而帮助布局中元素的排列和定位。
下图为一个布局窗口,窗口中显示了一个布局对象。
RulerLines
对象。public RulerSetting getRulerSetting()
如下图所示,为一个布局窗口,窗口中显示了一个布局对象,图中黑色双箭头所指示的就是布局的刻度尺,通过刻度尺设置对象可以设置刻度尺的单位以及控制刻度尺是否显示等。
RulerSetting
对象。public Rectangle2D getBounds()
public Rectangle2D getViewBounds()
public void setViewBounds(Rectangle2D rectangle2D)
rectangle2D
- 布局可见空间范围。public Point2D getCenter()
public void setCenter(Point2D point2D)
point2D
- 布局中心点。public double getZoomRatio()
public void setZoomRatio(double value)
value
- 布局当前的缩放比例。public double getMaxZoomRatio()
public void setMaxZoomRatio(double value)
value
- 布局的最大缩放比例。public double getMinZoomRatio()
public void setMinZoomRatio(double value)
value
- 布局的最小缩放比例。public int getHorizontalPaperCount()
public void setHorizontalPaperCount(int value)
value
- 设置布局包含的横向页面纸张数。public int getVerticalPaperCount()
public void setVerticalPaperCount(int value)
value
- 布局包含的纵向页面纸张数。@Deprecated public boolean getPrintPreview()
显示打印预览可以清楚的看到布局被打印出来的效果,打印预览可以将打印设置的情况可视化的显示出来。
@Deprecated public void setPrintPreview(boolean value)
显示打印预览可以清楚的看到布局被打印出来的效果,打印预览可以将打印设置的情况可视化的显示出来。
value
- 是否在布局控件中显示打印预览。public Workspace getWorkspace()
public void setWorkspace(Workspace workspace)
workspace
- 布局对象对应的工作空间。public LayoutElements getElements()
LayoutElements
对象。public Dimension getImageSize()
public void setImageSize(Dimension size)
size
- 将布局输出为图片时的图片大小。IllegalStateException
- 当前对象已经被释放。public LayoutSelection getSelection()
IllegalStateException
- 当前对象已经被释放。LayoutSelection
对象。public void clearSelection()
IllegalStateException
- 当前对象已经被释放。public void setSelection(LayoutSelection layoutSelection)
layoutSelection
- 布局的选择集。public boolean open(String name)
name
- 工作空间中存在的布局名称。public boolean loadTemplate(String templateName)
templateName
- 布局模板文件的全路径名。public boolean saveAsTemplate(String templateName)
SuperMap GIS 9D(2019)版本对布局存储进行了优化和调整,SuperMap GIS 9D(2019)及以上版本保存布局到工作空间后,布局存在兼容性问题,具体参见:Workspace.save()
方法中的注意事项。
templateName
- 布局模板文件的全路径名。public void zoomToPaper()
如下图两个布局窗口,图1所示为未设置zoomToPaper时的布局显示效果,图2所示为设置zoomToPaper后布局的显示效果。
public void zoomToPaperWidth()
public void zoomToPaperHeight()
public void zoom(double ratio)
ratio
- 缩放比例。public void pan(double offsetX, double offsetY)
offsetX
- X 方向上的移动距离。offsetY
- Y 方向上的移动距离。public void refresh()
public Point2D pixelToLayout(Point point)
point
- 待转换成布局坐标的像素坐标值。public Point layoutToPixel(Point2D point)
point
- 待转换成像素坐标的布局坐标值。public boolean outputLayoutToBMP(String fileName, int dpi)
fileName
- 导出的 BMP 文件的全路径。dpi
- 给定的输出分辨率,采用屏幕分辨率。public boolean outputLayoutToJPG(String fileName)
setImageSize()
方法来确定。fileName
- 导出的 JPG 文件的全路径。public boolean outputLayoutToJPG(String fileName, int dpi, int compress)
setImageSize()
方法来确定。fileName
- 导出的 JPG 文件的全路径。dpi
- 输出图片的 DPI。compress
- 输出的JPG图片的压缩率,范围为 [10-100]。值越小,表示压缩率越高,同时,图像质量也相对降低;100 表示不压缩。public boolean outputLayoutToPNG(String fileName, boolean isBackTransparent)
setImageSize()
方法来确定。fileName
- 导出的 PNG 文件的全路径。isBackTransparent
- 指定背景色是否透明。public boolean outputLayoutToEPS(String fileName)
setImageSize()
方法来确定。fileName
- 导出的 EPS 文件的全路径。public boolean outputLayoutToEMF(String fileName)
setImageSize()
方法来确定。
该方法仅在 Windows 平台版本中提供。
fileName
- 导出的 EMF 文件的全路径。public BufferedImage outputLayoutToBitmap()
setImageSize()
方法来确定。public boolean outputLayoutToGIF(String fileName, boolean isBackTransparent)
setImageSize()
方法来确定。fileName
- 导出的 GIF 文件的全路径。isBackTransparent
- 表示背景色是否透明。public boolean printToFile(String fileName, PrintFileType type, int dpi)
fileName
- 导出的文件的全路径。type
- 设置出图的图片类型。dpi
- 出图时设置的每英寸点数。public boolean printToFile(String fileName, PrintFileType type, int dpi, boolean isMultiPageWithPrinterPaper)
fileName
- 导出的文件的全路径。type
- 设置出图的图片类型。dpi
- 出图时设置的每英寸点数。isMultiPageWithPrinterPaper
- 是否按照打印纸张大小分页出图,true表示分页出图,false表示全幅出图。public void close()
public boolean fromXML(String xml)
xml
- 指定的 XML 字符串。public String toXML()
public GeoStyle getBackgroundStyle()
public void setBackgroundStyle(GeoStyle style)
style
- 布局的背景风格。public boolean isModified()
public void setModified(boolean value)
value
- 设置是否布局被修改过。public boolean isOverlapDisplayed()
public void setOverlapDisplayed(boolean value)
value
- 压盖时是否显示public boolean isTextAntialias()
public void setTextAntialias(boolean value)
value
- 是否布局文字反走样显示。public boolean isLineAntialias()
public void setLineAntialias(boolean value)
value
- 是否布局线型反走样显示。public int getOverlapLengthOfPrinterPaper()
public void setOverlapLengthOfPrinterPaper(int value)
value
- 重叠部分的长度,单位毫米。public boolean ensureVisible(Rectangle2D rectangle2D)
rectangle2D
- 指定的显示范围public Point2D layoutToLogical(Point2D point)
point
- 待转换成逻辑坐标的布局坐标值。public Point2D logicalToLayout(Point2D point)
point
- 待转换成布局坐标的逻辑坐标值。public Point logicalToPixel(Point2D point)
point
- 待转换成屏幕坐标的逻辑坐标值。public Point2D pixelToLogical(Point point)
point
- 待转换成逻辑坐标的屏幕坐标值。public void dispose()
public boolean adjustLayoutPaperSize()
public LayoutSelection hitTest(Point2D pt, double tolerance)
pt
- 指定的点对象。tolerance
- 指定的容限。public void addDrawingListener(MapLayoutDrawingListener l)
MapLayoutDrawingEvent
)的监听器。l
- 一个用于接收布局绘制操作事件的监听器。public void removeDrawingListener(MapLayoutDrawingListener l)
MapLayoutDrawingEvent
)的监听器。l
- 一个用于接收布局绘制操作事件的监听器。public void addDrawnListener(MapLayoutDrawnListener l)
MapLayoutDrawnEvent
)的监听器。l
- 一个用于接收布局绘制结束事件的监听器。public void removeDrawnListener(MapLayoutDrawnListener l)
MapLayoutDrawnEvent
)的监听器。l
- 一个用于接收布局绘制结束事件的监听器。public void setSymbolScalable(boolean value)
value
- 一个布尔值,指示布局的符号大小是否随图缩放。 默认为False。True 表示随着布局的缩放而缩放,在布局放大的同时,符号同时也放大。IllegalStateException
- 当前对象已经被释放。public boolean isSymbolScalable()
IllegalStateException
- 当前对象已经被释放。public void setPreLoadWebCache(int seconds)
seconds
- 缓存时间public void refreshGeoMap(int geoMapID)
geoMapID
- 指定地图对象的IDIllegalStateException
- 当前对象已经被释放。IllegalStateException
- 指定的geoMapID小于0。public String getExternalXML()
IllegalStateException
- 当前对象已经被释放。public void setExternalXML(String externalXML)
externalXML
- 扩展XML内容IllegalStateException
- 当前对象已经被释放。IllegalArgumentException
- externalXML为空public boolean isOutputWithHeaderFooter()
IllegalStateException
- 当前对象已经被释放。public void setOutputWithHeaderFooter(boolean value)
value
- 打印时是否绘制页眉页脚范围IllegalStateException
- 当前对象已经被释放。Copyright © 2021–2024 SuperMap. All rights reserved.