首页 / 浏览问题 / 组件GIS / 问题详情
iObjects java MapControl 实现缩放
2EXP 2018年06月19日
想通过MapControl 控制地图的缩放进而取得固定比例尺下专题图的数据,但发现通过MapControl获取的map设置scale并没有起到效果。

因此想请教下,如何通过MapControl设置地图的比例尺并起作用

1个回答

mapcontrol.getMap().setScale(value);

mapcontrol.setVisible(true);

你这样试试。
698EXP 2018年06月19日

不行,9Djava api 关于Layer中的themeToDatasetVector方法有一句话:Map.getScale() 方法的返回值为 0 时,该方法不起作用。但是我通过mapcontrol获取map不手动设置scale的时候,获取的scale是0,但是注记转CAD后有数据。

现在就是一个问题,无论我怎么是否设置scale和scale设成多少,感觉通过mapcontrol获取的map有一个默认值。注记转成cad的记录数量不随比例尺缩放改变。

最主要的是我8c正常使用的代码,换成9d后就有问题了。

你之前问了个沿线注记的问题是吧?
不设置scale的话是有个默认能够看全地图的比例尺。
我在9D上试了试,设置了scale,注记的数量是有变化的。
我的相关代码是
mapcontrol1.getMap().getLayers().add(dset, themelabel, true).setVisible(true);
                        mapcontrol1.getMap().setScale(3.757135866746152E-5);
                        mapcontrol1.getMap().refresh();
                       
                        ltree.reload();
                        labelDialog.dispose();
                        //转CAD
                        mapcontrol1.getMap().getLayers().get(0).themeToDatasetVector(workspace1.
                        getDatasources().get(0), "CAD8");

你之前那个程序我跑的时候设置了scale的确是没反应的,但跟你的问题无关我就没说,没想到你回来就提问了。
ltree.reload();我感觉是这个reload后使设置的scale生效,能告诉下ltree这个是怎么来的吗?iObaject java 操作地图这里不是很熟悉

跟那个没关系,我也是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());

你先加上试试。

加上后可以是可以,也不用从mapcontrol中获取map对象了。但是转存的cad数据集中的数据明显不对。

这个还要在好好研究下,越弄越蒙
...