首页 / 浏览问题 / 组件GIS / 问题详情
mapLayout打印geoMap空白
42EXP 2022年08月22日

版本是supermap-iobjectsjava-10.2.1-20428-92245-win64-all-Bin,其他布局元素可以正常打印出来,打印出来看到geomap的边框也被加入进去了,但是geomap始终是白的。

2 个回答

补充:原始的map对象的outMapToPNG也能打印出图形出来
42EXP 2022年08月22日
您好,根据您的代码,建议您先将m_map添加到workspace.Maps集合中保存后再进行布局出图,布局和地图之间是通过工作空间联系起来的,当前的工作空间的Maps中并没有您新建的m_map对象信息。

希望可以帮到您。
2,138EXP 2022年08月22日
在initWorkSpace里面加了一行,m_workspace.getMaps().add("zdMap",m_map.toXML());但是还是一样的结果.geomap空白

您好,我在本机验证是布局可以正常出图GeoMap的,建议您参考一下代码,对您的代码逻辑进行调整

public static void main(String[] args) {
        // write your code here
        Workspace workspace = new Workspace();
        Map map = new Map();
        map.setName("testMap");
        MapLayout mapLayout = new MapLayout();

        DatasourceConnectionInfo connectionInfo = new DatasourceConnectionInfo();
        connectionInfo.setServer("test.UDBX");
        connectionInfo.setEngineType(EngineType.UDBX);

        map.setWorkspace(workspace);
        Datasource datasource = workspace.getDatasources().open(connectionInfo);
        Layer layer = map.getLayers().add(datasource.getDatasets().get(0), true);
        map.viewEntire();
        workspace.getMaps().add(map.getName(), map.toXML());

        mapLayout.setWorkspace(workspace);
        GeoMap geoMap = new GeoMap();
        GeoRegion geoRegion = new GeoRegion();
        Point2Ds points = new Point2Ds();
        points.add(new Point2D(10, 10));
        points.add(new Point2D(300, 10));
        points.add(new Point2D(300, 300));
        points.add(new Point2D(10, 300));
        points.add(new Point2D(10, 10));
        geoRegion.addPart(points);
        geoMap.setShape(geoRegion);
        geoMap.setMapName(map.getName());
        geoMap.setMapViewBounds(layer.getBounds());
        geoMap.setBounds(layer.getBounds());
        mapLayout.getElements().addNew(geoMap);

        String outputFile = "test.png";
        File file = new File(outputFile);
        if (file.exists()) {
            file.delete();
        }
        mapLayout.printToFile(outputFile, PrintFileType.PNG, 96, false);
        Runtime runtime = Runtime.getRuntime();
        try {
            runtime.exec("cmd /c " + file.getAbsolutePath());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

测试了下,这样是可以出图。但是更新了map的状态后,比如我筛选显示地图要素,再定位。再绑定后用更新后的地图,地图没有被更新。还是全局的状态。

就是批量出宗地图
请问您方便把您的测试代码和测试数据通过私信发给我调试吗
代码和数据都在内网机上,没办法拷贝出来。。
批量出图的话建议可以先从当前布局中移除原来的GeoMap对象,再添加新的GeoMap对象试试出图,您上面贴的代码只有添加的逻辑,没有移除原来的GeoMap对象
...