首页 / 浏览问题 / 组件GIS / 问题详情
添加到新地图的什么API来完成
12EXP 2019年03月13日

这个操作是哪个API来完成的在iobject java里面

Map map = new Map(workspaces);
map.getLayers().insert(0,datasourceso.get(0).getDatasets().get(0));

我用这个API操作完成后提示有一个图层但是打开后还是没有

1个回答

你好,new一个新的map对象,然后用map.getLayers.add()方法
9,127EXP 2019年03月13日
Map map = new Map(workspaces);
Dataset datasetVector = workspaces.getDatasources().get(0).getDatasets().get("lhsh20152_Clip");
map.getLayers().add(datasetVector,true);
map.refresh();

这样添加上去地图还是没有

调试一下datasetVector有没有获取成功,还有layer添加成功没有。在刷新前加一句全幅显示的代码

这边显示的都添加进去了,这个图层名称和我手动添加进去是一样的,用api添加的时候就是不行,全幅显示之后还是没有,大神还有什么办法吗?

看了一下你的代码,你有定义mapcontrol吗?用来显示地图的控件
Workspace workspaces = new Workspace();
WorkspaceConnectionInfo connectionInfo = new WorkspaceConnectionInfo();
connectionInfo.setServer(lpath);
connectionInfo.setType(WorkspaceType.SMWU);
workspaces.open(connectionInfo);
Map map = new Map(workspaces);
Dataset datasetVector = workspaces.getDatasources().get(0).getDatasets().get(0);
map.getLayers().add(datasetVector,true);
map.getLayers().get(0).setVisible(true);
map.getLayers().get(0).setEditable(true);
map.viewEntire();
map.refresh();
System.out.println( "数据集:" +map.getLayers().get(0).getDataset());
System.out.println("layer:  "+ map.getLayers().get(0).getName());
System.out.println(map.getName());
workspaces.save();
workspaces.close();

这个是我这边的添加地图的代码

Workspace workspaces = new Workspace();
WorkspaceConnectionInfo connectionInfo = new WorkspaceConnectionInfo();
connectionInfo.setServer(lpath);
connectionInfo.setType(WorkspaceType.SMWU);
workspaces.open(connectionInfo);
Map map = new Map(workspaces);
Dataset datasetVector = workspaces.getDatasources().get(0).getDatasets().get(0);
map.getLayers().add(datasetVector,true);
map.getLayers().get(0).setVisible(true);
map.getLayers().get(0).setEditable(true);
map.viewEntire();
map.refresh();
LayerSettingImage setting = new LayerSettingImage();
setting.setOpaqueRate(50);
MapControl mapControl = new MapControl(workspaces);
Layer layer = mapControl.getMap().getLayers().add(datasetVector,setting,true);
mapControl.getMap().ensureVisible(layer);
mapControl.getMap().refresh();
System.out.println("mapController:  "+ mapControl.getMap());
System.out.println( "数据集:" +map.getLayers().get(0).getDataset());
System.out.println("layer:  "+ map.getLayers().get(0).getName());
System.out.println(map.getName());
map.dispose();
mapControl.dispose();
workspaces.save();
workspaces.close();

添加了mapcontroller方法后还是不行

你好,mapcontrol是存在一个控件里面的,如JPanel里面,类似于这样写,而不是随便new 一个mapcontrol。

这只是实现数据集添加到新地图功能保存到工作空间里面这个需要用到控件吗?

不好意思,你只是想保存地图并不是显示是吗?你需要将地图转换为xml,然后用maps接口添加导地图集合中

好的,麻烦你了,我再看看吧
...