您好,已使用您提供的代码,结合组件安装目录下 SampleCode\LayoutDisplay\src\com\supermap\samplecode\layout 中的示例代码进行测试,验证打印成功,
您需要重新设置 center的值,因为
geoLegend.setCenter 是用于设置图例在布局中的位置,与数据集无关。
可以理解为您这个图例组件您要贴到布局组件中的像素尺寸位置
注意:当然您需要根据自己的 布局尺寸,图例文字内容,调整 图例的宽高,字体。
您好,关于您提到的宽高,文本样式,字体大小,经过测试,结合您需要打印的需求,给到您如下反馈: 1. 您需要将 geolegend.load(true);中的true 修改为false。
该参数的说明为:
isAddToScreenLayer - 是否添加到屏幕图层。加载到屏幕图层的图例,将不随布局和地图的缩放而变化,这样在进行布局浏览时,可以获得较好的显示效果;但在进行布局打印时,不建议用户将图例加载到屏幕图层,直接加载到布局即可。
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);