不行,9Djava api 关于Layer中的themeToDatasetVector方法有一句话:当 Map.getScale() 方法的返回值为 0 时,该方法不起作用。但是我通过mapcontrol获取map不手动设置scale的时候,获取的scale是0,但是注记转CAD后有数据。
Map.getScale()
现在就是一个问题,无论我怎么是否设置scale和scale设成多少,感觉通过mapcontrol获取的map有一个默认值。注记转成cad的记录数量不随比例尺缩放改变。
最主要的是我8c正常使用的代码,换成9d后就有问题了。
跟那个没关系,我也是iObjects Java初学者。
我又试了你的代码,发现只要在你setscale之前加上mapcontrol1.getMap().viewEntire();就可以根据你设置的比例尺改变注记的数量,但是注记的数量少于桌面版的同等比例尺下的注记数量,我还没有弄懂为什么。
theme.setAlongLine(true); mapcontrol1.getMap().getLayers().add(dataset, theme, true).setVisible(true); //layertheme.setVisible(true); //mapcontrol1.getMap().refresh(); mapcontrol1.getMap().viewEntire(); System.out.println(mapcontrol1.getMap().getScale()); mapcontrol1.getMap().setScale(3.431905989738579E-5); mapcontrol1.getMap().refresh(); mapcontrol1.getMap().getLayers().get(0).themeToDatasetVector(source, "NOTE"); System.out.println(mapcontrol1.getMap().getScale());
你先加上试试。