首页 / 浏览问题 / 组件GIS / 问题详情
布局中图例设置了之后效果不起作用
33EXP 2023年10月30日
1、我设置了geoLegend的中心点和宽高,设置了图例项的文本宽高 使用load加载之后到布局中打印出图效果没有起作用

1个回答

您好,根据您的描述,我们需要排除问题出现在哪个环节,请问添加图例到布局后在布局组件中是否显示正常。

请贴出您的完整示例代码,以便我这边进行测试。

同时请贴出您使用组件的版本号
365EXP 2023年10月30日
使用的是 iobjects java 11i
下面是我的代码 关于图例部分的

     其中center是我一个数据集的矩形 宽16000  高8000

        TextStyle legendTextStyle = new TextStyle();
        legendTextStyle.setFontHeight(2000);
        legendTextStyle.setFontWidth(2000);
        GeoLegend geoLegend = new GeoLegend(mapName, _workspace);
        geoLegend.setCenter(new Point2D(center.getWidth() / 8, center.getHeight() / 8));
        geoLegend.setWidth(center.getWidth() / 4);
        geoLegend.setHeight(center.getHeight() / 4);
        geoLegend.setColumnCount(1);

        geolegend.setItemTextStyle(legendTextStyle );

        geolegend.load(true);

        
        geoLegend.setItemTextStyle(legendTextStyle);

您好,已使用您提供的代码,结合组件安装目录下 SampleCode\LayoutDisplay\src\com\supermap\samplecode\layout 中的示例代码进行测试,验证打印成功,

您需要重新设置 center的值,因为 
geoLegend.setCenter 是用于设置图例在布局中的位置,与数据集无关。

可以理解为您这个图例组件您要贴到布局组件中的像素尺寸位置

注意:当然您需要根据自己的 布局尺寸,图例文字内容,调整 图例的宽高,字体。

主要是图例的宽高没有按照设定的来 而且图里文本的样式没有生效的感觉  字太小了

您好,关于您提到的宽高,文本样式,字体大小,经过测试,结合您需要打印的需求,给到您如下反馈:
1. 您需要将 geolegend.load(true);中的true 修改为false。

该参数的说明为:

isAddToScreenLayer - 是否添加到屏幕图层。加载到屏幕图层的图例,将不随布局和地图的缩放而变化,这样在进行布局浏览时,可以获得较好的显示效果;但在进行布局打印时,不建议用户将图例加载到屏幕图层,直接加载到布局即可。

2. 将 legendTextStyle.setFontHeight 和 legendTextStyle.setFontWidth的值默认值为100,您设置的2000有些大了,还需结合您的布局组件内容进行调整

3. 添加 geoLegend.setSubItemTextStyle(legendTextStyle ); 用于修改 专题图图例文字样式

4. 您如果需要修改title, 您可以调用 geoLegend.setTitleStyle(textStyle);

希望能帮到您

现在有个问题是图例设置的宽高没有起作用,刚才那些图例项文本都有作用了 宽高设置还需要注意什么吗

对于宽高,您不能使用您代码中的 geoLegend.setWidth(center.getWidth() / 4); 因为您说过 center是来自数据集的信息。

您可以设置一些固定值来测试,比如:

 

geoLegend.setWidth(200);
geoLegend.setHeight(150);

我的完整代码为;

GeoLegend geoLegend = new GeoLegend(geoMap.getMapName(), m_mapLayoutControl.getMapLayout().getWorkspace());
TextStyle legendTextStyle = new TextStyle();
legendTextStyle.setFontHeight(200);
legendTextStyle.setFontWidth(200);
geoLegend.setTitleStyle(legendTextStyle);
geoLegend.setItemTextStyle(legendTextStyle );
geoLegend.setSubItemTextStyle(legendTextStyle );

geoLegend.setCenter(new Point2D(1000, 400));
geoLegend.setWidth(200);
geoLegend.setHeight(150);
geoLegend.load(false);
elements.addNew(geoLegend);

我图图例里面有个面的图例  但是那个面图例是一条线  这个是怎么回事
我删掉了那个设置样式的几行  宽高比例就回来了  是我预期的效果
感谢您反馈的问题,让我们产品越来越完善。希望下次发现新的问题能及时联系我们,谢谢!
...