首页 / 浏览问题 / 组件GIS / 问题详情
new一个Geomap获取属性存在问题
34EXP 2023年03月14日

依据在布局中存在的矩形,new 一个geomap之后,通过接口获取不到属性

new的代码

geoMap = new GeoMap();
geoMap.setMapName(mapName);
geoMap.setShape(layoutElements.getGeometry());
geoMap.setGridVisible(false);
layoutElements.addNew(geoMap);

获取属性的代码

String mapXml = geoMap.getMapXML();
double scale = map.getScale();

最后mapXml = "",scale=0

疑问:1、我的想法是这个xml应该是mapName对应的map的xml,scale是mapName对应的map的scale?

2、我要通过geomap获取指定的map的xml、scale应该如何获取

1个回答

您好,

只是创建了geoMap,对geoMap设置了该布局地图空间需要打开的地图名称,此时geomap对象并没有与WorkSpace关联,所以是读不到工作空间内的地图信息的。

所以以setMapName方法给geoMap对象,立刻对该对象获取xml是无效的,如果想要直接在geoMap对象上获取,使用geoMap.setMapXML(),来赋予地图内容。

而且单纯获取map的xml来说,建议从WorkSpace的maps下使用地图名去获取。

第二个就是Scale比例尺,该比例尺是布局地图元素在布局中,地图当前显示的比例尺,直接对geoMap对象无法获取到,同样是因为以地图名称创建是拿不到地图信息的,

因此也无法得到比例尺信息,除非是geoMap.setMapXML()或者geoMap.setMapName()+geoMap.setScale();这两种方式创建初始化geoMap,才能立刻获取到。

不过对已经绑定好工作空间的Layout的layoutElements在添加geoMap对象以后会给一个默认的比例尺,此时获取geoMap是可以取到比例尺的。

LayoutElements elements = m_mapLayoutControl.getMapLayout() .getElements();
elements.moveFirst() ;
Geometry geoMapNow=elements.getGeometry();
GeoMap geoMap1=(GeoMap)geoMapNow;
double mapScale =geoMap1.getMapScale();
希望可以帮助到您。
10,758EXP 2023年03月15日
...