public class Map
extends java.lang.Object
地图类,负责地图显示环境的管理。
地图是对地理数据的可视化,通常由一个或多个图层组成。一个地图对象通常通过其图层集合对象 Layers 来管理其中的所有图层,并且地图必须与一个工作空间相关联,以便来显示该工作空间中的数据。另外,对地图的显示方式的设置将对其中的所有图层起作用。该类提供了对地图的各种显示方式的返回和设置,如地图的显示范围,比例尺,坐标以及量度单位,坐标系统以及文本、点等图层的默认显示方式等,并提供了对地图进行的相关操作的方法,如地图的打开与关闭,缩放、平移与全幅显示,以及地图的输出等。
注意:
限定符和类型 | 方法和说明 |
---|---|
boolean |
addLayersFromMap(java.lang.String strMapName, boolean useDynamicProjectionIfNeeded)
合并地图
|
void |
close()
关闭当前地图。
|
Legend |
createLegend()
设置图例 该图例支持显示点线面的填充符号,只设置填充颜色,如前景色、背景色,图例是不进行加载。
|
void |
dispose()
释放对象所占用的资源。
|
double |
getAngle()
返回当前地图的旋转角度。
|
int |
getARMapType()
获取ARMap不同类型
|
GeoStyle |
getBackgroundStyle()
返回当前地图的背景风格。
|
Rectangle2D |
getBounds()
返回当前地图的空间范围。
|
Point2D |
getCenter()
返回当前地图的显示范围的中心点。
|
MapColorMode |
getColorMode()
获取地图的颜色模式
|
Legend |
getCreateLegend()
获取图例
|
int |
getCurrentPlayerTick()
返回当前地图播放显示的帧的序号
|
java.lang.String |
getCurrentTickEndTime()
当时态数据播放显示时,获取当前播放帧中止时间
|
java.lang.String |
getCurrentTickStartTime()
当时态数据播放显示时,获取当前播放帧起始时间
|
java.util.Date |
getDefaultMapEndTime()
遍历所有启用时间且可见的图层的时间字段,返回时间值的最大值作为时间线的终止时间
|
java.util.Date |
getDefaultMapStartTime()
遍历所有启用时间且可见的图层的时间字段,返回时间值的最小值作为时间线的起始时间
|
java.lang.String |
getDescription()
返回当前地图的描述信息。
|
CoordSysTransMethod |
getDynamicPrjTransMethond()
获取地图动态投影时所使用的投影算法,在不同椭球体时需要设置。
|
CoordSysTransParameter |
getDynamicPrjTransParameter()
获取地图动态投影时所使用的转换参数
|
int |
getImageSizeHeight()
返回图片的高。
|
int |
getImageSizeWidth()
返回图片大小的宽度。
|
boolean |
getIsPOIOptimized()
是否优化POI显示
|
Layers |
getLayers()
返回当前地图所包含的图层集合对象。
|
Legend |
getLegend()
获取地图的图例控件
|
Rectangle2D |
getLockedViewBounds()
返回 MapControl 地图控件中锁定的地图可视范围。
|
double |
getMapDPI()
获取地图显示的DPI。
|
java.util.Date |
getMapEndTime()
返回地图播放显示时态数据的时间线长度的终止时间值。
|
MapLoadedListener |
getMapLoadedListener()
获取用于接收地图加载完成的监听器。
|
java.util.Date |
getMapStartTime()
返回地图播放显示时态数据的时间线长度的起始时间值
|
MapView |
getMapView()
获取Map的地图控件
|
double |
getMaxScale()
返回地图的最大比例尺。
|
double |
getMinScale()
返回地图的最小比例尺。
|
TimeSpan |
getMinTimeStep()
计算地图播放显示时态数据的默认时间步长间隔
|
java.lang.String |
getName()
返回当前地图的名称。
|
MapOverlapDisplayedOptions |
getOverlapDisplayedOptions()
获取或设置压盖选项。
|
PrjCoordSys |
getPrjCoordSys()
返回地图的投影坐标系统。
|
double |
getScale()
返回当前地图的显示比例尺。
|
ScreenLayer |
getScreenLayer()
获取地图的屏幕图层。
|
double |
getSlantAngle()
获取旋转角度
|
java.lang.String |
getTimeFormat()
时态数据播放显示时,如果设置窗口显示当前帧的时间范围,该接口可以返回显示时间的格式
|
TimeSpan |
getTimeStep()
返回播放时态数据的时间步长间隔
|
TimeSpan |
getTimeWindow()
返回播放时态数据的时间窗
|
TrackingLayer |
getTrackingLayer()
返回当前地图的跟踪图层。
|
Rectangle2D |
getUserEditBounds()
获取用户编辑范围。
|
Rectangle2D |
getViewBounds()
返回当前地图的可见范围,也称显示范围。
|
double[] |
getVisibleScales()
获取固定比例尺数组,即固定比例尺显示时,可显示的比例尺
|
Workspace |
getWorkspace()
返回当前地图所关联的工作空间。
|
boolean |
isAntialias()
返回一个布尔值指定是否反走样地图。
|
boolean |
IsArmap()
是否为Ar地图
|
boolean |
isDynamicProjection()
返回是否允许地图动态投影显示。
|
boolean |
isFullScreenDrawModel()
获取是否使用整屏绘制模式。
|
boolean |
isHighDefinitionMode()
获取影像地图是否是高清显示模式
|
boolean |
isModified()
返回一个布尔值指定当前地图是否被修改了。
|
boolean |
isOverlapDisplayed()
获取或设置一个值,表示压盖时是否显示。
|
boolean |
isPaintBackground()
返回一个布尔值指定是否绘制地图背景。
|
boolean |
isShowTime()
返回时态数据播放显示时,窗口是否显示当前帧的时间范围的文本,true表示显示,false表示不显示
|
boolean |
isTimeEnable()
返回地图是否启用播放显示时态数据的功能
|
boolean |
isUseSystemDPI()
获取是否使用系统的DPI,当为false时setMapDPI才有效
|
boolean |
isViewBoundsLocked()
返回一个布尔值,用于指定 MapControl 地图控件中是否锁定地图的可视范围。
|
boolean |
isVisibleScalesEnabled()
是否使用固定比例尺来显示地图
|
Point |
mapToPixel(Point2D point)
将地图中指定点的地图坐标转换为像素坐标。
|
boolean |
open(java.lang.String name)
打开指定名称的地图。
|
DatasetImage |
outputMapToDatasetImage(Datasource datasource, java.lang.String datasetName, double resolution, Rectangle2D bounds, EncodeType encodeType)
将当前地图以影像数据集的形式保存
|
void |
pan(double offsetX, double offsetY)
将地图平移指定的距离。
|
Point2D |
pixelToMap(Point point)
将地图中指定点的像素坐标转换为地图坐标。
|
void |
refresh()
重新绘制当前地图。
|
void |
removePrjCoordSysTransListener(PrjCoordSysTranslatorListener listener)
删除自定义投影转换算法接口类
|
boolean |
save()
保存当前地图到工作空间
|
boolean |
save(java.lang.String mapName)
以指定名称保存当前地图,但不能与工作空间中现有地图重名
|
boolean |
saveAs(java.lang.String mapName)
将当前地图另存为指定名称的地图
|
void |
setAngle(double value)
设置当前地图的旋转角度。
|
void |
setAntialias(boolean value)
设置一个布尔值指定是否反走样地图。
|
void |
setARMapType(int value)
设置ARMap不同类型
|
void |
setBackgroundStyle(GeoStyle style)
设置当前地图的背景风格。
|
void |
setCenter(Point2D point)
设置当前地图的显示范围的中心点。
|
void |
setColorMode(MapColorMode mapColorMode)
设置地图的颜色模式
|
void |
setCurrentPlayerTick(int currentTick)
设置当前地图播放显示的帧的序号
|
void |
setDescription(java.lang.String value)
设置当前地图的描述信息。
|
void |
setDynamicPrjTransMethond(CoordSysTransMethod transMethod)
设置动态投影时地理坐标系转换所使用的算法,不支持扩展算法,即:CoordSysTransMethod.MTH_EXTENTION
|
void |
setDynamicPrjTransParameter(CoordSysTransParameter value)
设置地图动态投影时所使用的转换参数
|
void |
setDynamicProjection(boolean value)
设置是否允许地图动态投影显示。
|
void |
setDynamicProjection(boolean bDynamic, PrjCoordSys value)
设置地图是否动态投影显示,以及地图的投影坐标系
|
void |
setFullScreenDrawModel(boolean isFullScreen)
设置是否使用整屏绘制模式,该功能仅适用于内存显示引擎,OpenGL并不支持。
|
void |
setHighDefinitionMode(boolean isHighDefinitionMode)
设置影像地图高清显示模式 需在添加或打开地图前调用
|
void |
setIsArmap(boolean isArmap)
设置为Ar地图
|
void |
setIsCadBatchRender(boolean bIsCadBatchRender)
设置CAD图层是否批量绘制模式
|
void |
setIsPOIOptimized(boolean bPOIOptimized)
是否优化POI显示
|
void |
setIsShowTime(boolean isShowTime)
设置时态数据播放显示时,窗口是否显示当前帧的时间范围的文本,true表示显示,false表示不显示
|
void |
setLockedViewBounds(Rectangle2D rect)
设置地图控件中锁定的地图可视范围。
|
void |
setMapDPI(double dpi)
设置地图显示的dpi。
|
void |
setMapEndTime(java.util.Date endTime)
设置地图播放显示时态数据的时间线长度的终止时间值
|
void |
setMapLoadedListener(MapLoadedListener listener)
添加一个用于接收地图加载完成的监听器。
|
void |
setMapOperateListener(MapOperateListener listener)
添加一个用于接收地图打开、关闭事件的监听器。
|
void |
setMapStartTime(java.util.Date startTime)
设置地图播放显示时态数据的时间线长度的起始时间值
|
void |
setMaxScale(double value)
设置地图的最大显示比例尺。
|
void |
setMinScale(double value)
设置地图的最小显示比例尺。
|
void |
setModified(boolean value)
设置当前地图是否被修改了。
|
void |
setOverlapDisplayed(boolean value)
获取或设置一个值,表示压盖时是否显示。
|
void |
setOverlapDisplayedOptions(MapOverlapDisplayedOptions value)
获取或设置压盖选项。
|
void |
setPaintBackground(boolean value)
设置一个布尔值指定是否绘制地图背景。
|
void |
setPrjCoordSys(PrjCoordSys value)
设置地图的投影坐标系统。
|
void |
setPrjCoordSysTransListener(PrjCoordSysTranslatorListener listener, PrjCoordSys srcPrjCoordSys, PrjCoordSys desPrjCoordSys)
设置自定义投影转换算法接口类
|
void |
setScale(double value)
设置当前地图的显示比例尺。
|
void |
setSlantAngle(double value)
设置旋转角度
|
void |
setTimeEnable(boolean bEnable)
设置地图是否启用播放显示时态数据的功能
|
void |
setTimeFormat(java.lang.String timeFormat)
时态数据播放显示时,如果设置窗口显示当前帧的时间范围,该接口可以设置显示时间的格式
|
void |
setTimeStep(TimeSpan timeStep)
设置播放时态数据的时间步长间隔
|
void |
setTimeWindow(TimeSpan timeWindow)
设置播放时态数据的时间窗
|
void |
setUserEditBounds(Rectangle2D rect)
设置用户编辑范围。
|
void |
setUseSystemDPI(boolean setMapDPI)
设置是否使用系统的DPI,当为false时setMapDPI才有效。
|
void |
setViewBounds(Rectangle2D rect)
设置当前地图的可见范围,也称显示范围。
|
void |
setViewBoundsLocked(boolean value)
设置一个布尔值指定 MapControl 地图控件中是否锁定地图的可视范围。
|
void |
setVisibleScales(double[] values)
设置固定比例尺数组,即固定比例尺显示时,可显示的比例尺
|
void |
setVisibleScalesEnabled(boolean value)
设置是否使用固定比例尺来显示地图
|
void |
setWorkspace(Workspace workspace)
设置当前地图所关联的工作空间。
|
java.lang.String |
toXML()
返回此地图对象的 XML 字符串形式的描述。
|
void |
viewEntire()
全幅显示此地图。
|
void |
zoom(double ratio)
将地图放大或缩小指定的比例。
|
public Map()
public Map(Workspace workspace)
workspace
- 指定的工作空间。public java.lang.String getName()
public java.lang.String getDescription()
public boolean addLayersFromMap(java.lang.String strMapName, boolean useDynamicProjectionIfNeeded)
strMapName
- StringuseDynamicProjectionIfNeeded
- booleanpublic void setDescription(java.lang.String value)
value
- 指定当前地图的描述信息。public double getAngle()
public void setAngle(double value)
注意:设置地图旋转角度功能只在开启整屏绘制模式时支持.
value
- 指定当前地图的旋转角度。public GeoStyle getBackgroundStyle()
public void setBackgroundStyle(GeoStyle style)
style
- 指定当前地图的背景风格。public Rectangle2D getBounds()
public Rectangle2D getViewBounds()
setViewBounds()
方法来进行设置,还可以通过设置显示范围的中心点(Center)和显示比例尺(Scale)的方式来进行设置。public void setViewBounds(Rectangle2D rect)
setViewBounds()
方法来进行设置,还可以通过设置显示范围的中心点(Center)和显示比例尺(Scale)的方式来进行设置。rect
- 指定当前地图的可见范围。public Point2D getCenter()
public void setCenter(Point2D point)
point
- 指定当前地图的显示范围的中心点。public boolean isAntialias()
public void setAntialias(boolean value)
value
- 用一个布尔值指定是否反走样地图。public boolean isModified()
public void setMapDPI(double dpi)
用户获取android 设备的DPI,可使用DisplayMetics中的densityDpi作为设备的DPI。当显示以EngineType.IMAGEPLUGINS方式打开的缓存文件时,请使用默认DPI。
dpi
- 地图显示的dpi。public double getMapDPI()
public void setIsArmap(boolean isArmap)
isArmap
- 是否为Ar地图public boolean IsArmap()
public void setUseSystemDPI(boolean setMapDPI)
setMapDPI
- 是否使用系统的DPI。
注意:不是所有的地图都可以使用自定义的DPI
public boolean isUseSystemDPI()
public void setModified(boolean value)
当地图的任何显示属性发生变化,或者其中的 layers 或 layer 对象发生变化,都认为该地图被修改。
value
- 当前地图是否被修改了public int getImageSizeWidth()
public int getImageSizeHeight()
public boolean isViewBoundsLocked()
public void setViewBoundsLocked(boolean value)
value
- 指定一个布尔值,用于指定此地图控件的可视范围是否锁定。public Rectangle2D getLockedViewBounds()
public void setLockedViewBounds(Rectangle2D rect)
rect
- 指定地图控件锁定的可视范围。public boolean isPaintBackground()
public void setPaintBackground(boolean value)
value
- 用一个布尔值,用于指定是否绘制地图背景。public Point mapToPixel(Point2D point)
point
- 要转换坐标的指定点。public Point2D pixelToMap(Point point)
point
- 要转换坐标的指定点。public void setMapOperateListener(MapOperateListener listener)
listener
- 一个用于接收地图打开、关闭事件的监听器。public void setMapLoadedListener(MapLoadedListener listener)
listener
- 一个用于接收地图加载完成的监听器。public MapLoadedListener getMapLoadedListener()
public double getScale()
public void setScale(double value)
value
- 指定当前地图的显示比例尺。public TrackingLayer getTrackingLayer()
TrackingLayer
类。public boolean isDynamicProjection()
public void setDynamicProjection(boolean value)
value
- 一个布尔值,用于指定是否允许地图动态投影显示。public PrjCoordSys getPrjCoordSys()
PrjCoordSys
。public void setPrjCoordSys(PrjCoordSys value)
PrjCoordSys
。value
- 地图的投影坐标系统。public Layers getLayers()
public Workspace getWorkspace()
public void setWorkspace(Workspace workspace)
workspace
- 指定当前地图所关联的工作空间。public boolean open(java.lang.String name)
name
- 地图名称。public void close()
public void zoom(double ratio)
ratio
- 缩放地图比例,此值不可以为负。public void pan(double offsetX, double offsetY)
offsetX
- X 方向上的移动距离,单位为坐标单位。offsetY
- Y 方向上的移动距离,单位为坐标单位。public void refresh()
public void viewEntire()
public void dispose()
public double getMinScale()
public double getMaxScale()
public java.lang.String toXML()
任何地图都可以导出成 xml 字符串,而地图的 xml 字符串也可以导入成为一个地图来显示。地图的 xml 字符串中存储了关于地图及其图层的显示设置以及关联的数据信息等。此外,可以将地图的 xml 字符串保存成一个 xml 文件。
假设打开了一个工作空间 workspace
对象,工作空间中存在一幅地图。
public void toAndFromXMLTest() { // 打开工作空间中的地图 Map map = new Map(workspace); map.open(workspace.getMaps().get(0)); // 将地图导出为 XML 字符串 String xml = map.toXML(); map.close(); //释放资源 map.dispose(); }
public void setFullScreenDrawModel(boolean isFullScreen)
使用整屏绘制模式时,点、文字和普通图层同时显示。否则,点、和文字在底图绘制完毕后绘制。
isFullScreen
- 是否使用整屏绘制模式。public boolean isFullScreenDrawModel()
public ScreenLayer getScreenLayer()
public boolean save() throws java.lang.Exception
1.若当前地图已经关闭,保存失败; 2.若当前地图没有绑定的工作空间,保存失败;
java.lang.Exception
- 如果地图已关闭或对象已经释放等不可保存状态,将抛出异常public void testSaveMap{ String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath(); MapControl mapControl = new MapControl(context); Map map = mapControl.getMap(); Workspace workspace = new Workspace(); WorkspaceConnectionInfo info = workspace.getConnectionInfo(); info.setType(WorkspaceType.SMWU); info.setServer(rootPath + "/SuperMap/data/World.smwu"); workspace.open(info); map.setWorkspace(workspace); String mapName = workspace.getMaps(0); map.open(mapName); …… map.save(); }
public boolean save(java.lang.String mapName) throws java.lang.Exception
mapName
- 地图名称java.lang.Exception
- 如果地图已关闭或对象已经释放等不可保存状态,将抛出异常public void testSaveMap{ MapControl mapControl = new MapControl(context); Map map = mapControl.getMap(); String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath(); Workspace workspace = new Workspace(); WorkspaceConnectionInfo info = workspace.getConnectionInfo(); info.setType(WorkspaceType.SMWU); info.setServer(rootPath + "/SuperMap/data/World.smwu"); workspace.open(info); map.setWorkspace(workspace); Dataset dataset = workspace.getDatasources().get(0).getDatasets().get(0); map.getLayers.add(dataset, true); ....... String mapName = "Map_1"; map.save(mapName); }
public boolean saveAs(java.lang.String mapName) throws java.lang.Exception
mapName
- 地图名称,不能为null或空串("")。1.若指定的地图名称为null或为空串(""),保存失败; 2.若当前地图已经关闭,保存失败; 3.若当前地图没有绑定的工作空间,保存失败;
java.lang.Exception
- 如果地图已关闭或对象已经释放等不可保存状态,将抛出异常 * @example 以下代码示范如何将地图另存为;打开一个工作空间,打开一幅地图,将此地图另存为新地图。
public void testSaveMap{ String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath(); MapControl mapControl = new MapControl(context); Map map = mapControl.getMap(); Workspace workspace = new Workspace(); WorkspaceConnectionInfo info = workspace.getConnectionInfo(); info.setType(WorkspaceType.SMWU); info.setServer(rootPath + "/SuperMap/data/World.smwu"); workspace.open(info); map.setWorkspace(workspace); String mapName = workspace.getMaps(0); map.open(mapName); ....... String mapName = "MyWorldMap"; map.saveAs(mapName); }
public Legend getLegend()
public void setUserEditBounds(Rectangle2D rect)
rect
- 指定编辑范围。public Rectangle2D getUserEditBounds()
public void setMinScale(double value)
value
- 地图的最小显示比例尺。public void setMaxScale(double value)
value
- 地图的最大显示比例尺。public boolean isVisibleScalesEnabled()
public void setVisibleScalesEnabled(boolean value)
value
- 是否使用固定比例尺来显示地图public double[] getVisibleScales()
public void setVisibleScales(double[] values)
values
- 固定比例尺数组public MapColorMode getColorMode()
public void setColorMode(MapColorMode mapColorMode)
mapColorMode
- 颜色模式public void setPrjCoordSysTransListener(PrjCoordSysTranslatorListener listener, PrjCoordSys srcPrjCoordSys, PrjCoordSys desPrjCoordSys)
listener
- 自定义投影转换算法接口类srcPrjCoordSys
- 源投影坐标系desPrjCoordSys
- 目标投影坐标系public void removePrjCoordSysTransListener(PrjCoordSysTranslatorListener listener)
listener
- 自定义投影转换算法接口类public void setDynamicProjection(boolean bDynamic, PrjCoordSys value)
bDynamic
- 地图是否动态投影value
- 投影坐标系public CoordSysTransMethod getDynamicPrjTransMethond()
public void setDynamicPrjTransMethond(CoordSysTransMethod transMethod)
transMethod
- 地理坐标系转换所使用的算法public CoordSysTransParameter getDynamicPrjTransParameter()
public void setDynamicPrjTransParameter(CoordSysTransParameter value)
value
- 投影转换参数public DatasetImage outputMapToDatasetImage(Datasource datasource, java.lang.String datasetName, double resolution, Rectangle2D bounds, EncodeType encodeType)
datasource
- 用于保存影像数据集的数据源datasetName
- 影像数据集的名称resolution
- 屏幕分辨率bounds
- 需要保存的地图范围encodeType
- 编码格式public void setARMapType(int value)
value
- ARMap type 类型public int getARMapType()
public MapOverlapDisplayedOptions getOverlapDisplayedOptions()
public void setOverlapDisplayedOptions(MapOverlapDisplayedOptions value)
value
- MapOverlapDisplayedOptionspublic boolean isOverlapDisplayed()
public void setOverlapDisplayed(boolean value)
value
- booleanpublic MapView getMapView()
public Legend createLegend()
public Legend getCreateLegend()
public void setSlantAngle(double value)
value
- 旋转角度public double getSlantAngle()
public boolean getIsPOIOptimized()
public void setIsPOIOptimized(boolean bPOIOptimized)
bPOIOptimized
- boolpublic void setHighDefinitionMode(boolean isHighDefinitionMode)
isHighDefinitionMode
- boolpublic boolean isHighDefinitionMode()
public boolean isTimeEnable()
public void setTimeEnable(boolean bEnable)
public TimeSpan getTimeStep()
public void setTimeStep(TimeSpan timeStep)
public TimeSpan getTimeWindow()
public void setTimeWindow(TimeSpan timeWindow)
public int getCurrentPlayerTick()
public void setCurrentPlayerTick(int currentTick)
public java.util.Date getMapStartTime()
public void setMapStartTime(java.util.Date startTime)
public java.util.Date getMapEndTime()
public void setMapEndTime(java.util.Date endTime)
public java.util.Date getDefaultMapStartTime()
public java.util.Date getDefaultMapEndTime()
public TimeSpan getMinTimeStep()
public java.lang.String getTimeFormat()
public void setTimeFormat(java.lang.String timeFormat)
public boolean isShowTime()
public void setIsShowTime(boolean isShowTime)
public java.lang.String getCurrentTickStartTime()
public java.lang.String getCurrentTickEndTime()
public void setIsCadBatchRender(boolean bIsCadBatchRender)
bIsCadBatchRender
-