您好,根据您的描述,得到以下需求点:
1. 打开工作空间中的一个地图
2. 设置地图的显示范围
2. 添加一个图标在地图中心点
3. 将地图输出为PNG
请参考以下代码进行尝试(示例代码基于SuperMap iObjects Java 11.1.1版本编写):
/**
* 输出PNG图片
* @param x 地图中心点x值
* @param y 地图中心点y值
* @param scale 地图显示比例词
* @param width 出图PNG像素宽
* @param height 出图PNG像素高
* @param svgIconPath 地图中心点图标的SVG文件路径
* @param savePNGPath 地图保存PNG文件路径
*/
public void outToPNG(double x,double y,double scale,int width,int height, String svgIconPath, String savePNGPath){
// 初始化地图对象
String mapName = m_workspace.getMaps().get(0);// 获取工作空间中第1个地图的名称. m_workspace变量是您的工作空间
Map map = new Map(m_workspace);// 初始化地图对象
map.open(mapName);// 通过地图名称打开地图
// 设置输出PNG时,地图的显示范围
map.setImageSize(new Dimension(width,height));// 设置出图时图片的大小,以像素为单位
map.setScale(scale);// 设置地图的显示比例尺
map.setCenter(new Point2D(x,y));// 设置地图的显示范围的中心点
// 添加地图中心点图标
// 1.添加图标到工作空间符号库
SymbolMarker symbolMarker= new SymbolMarker();
symbolMarker.fromSVG(svgIconPath);
int symbolMarkerId= m_workspace.getResources().getMarkerLibrary().add(symbolMarker);
// 2.初始化 图标样式
GeoStyle geoStyle = new GeoStyle();
geoStyle.setMarkerSymbolID(symbolMarkerId); // 设置符号ID为图标添加到工作空间后的ID
geoStyle.setMarkerSize(new Size2D(25,25));// 设置图标大小
// 3.添加图标到地图中心
GeoPoint point= new GeoPoint(map.getCenter().getX(), map.getCenter().getY());
point.setStyle(geoStyle);
TrackingLayer trackingLayer = map.getTrackingLayer();
int pointIndex = trackingLayer.add(point,"centerIcon");
// 地图输出PNG图片
map.outputMapToPNG(savePNGPath,true);// 输出地图
// 移除地图中心图标
trackingLayer.remove(pointIndex);
// 移除工作空间中svg符号
m_workspace.getResources().getMarkerLibrary().remove(symbolMarkerId);
}
希望能够帮助到您