首页 / 浏览问题 / 移动GIS / 问题详情
Android如何实现对在线图层的标绘功能?
15EXP 2020年11月11日

使用产品:iMobile v1010 for Android

问题:我想在Android端实现对在线图层的标绘功能,但是看咱们官方Demo里,用的是离线图。

重点是,Demo里有一段代码是:

if (control.getMap().open(maps.get(0))) {
    Layers layers = control.getMap().getLayers();
    Layer layer = layers.get("CAD@Edit");
    if (layer != null)
        layer.setEditable(true);
}

我不知道是不是使用标绘功能,必须得有个名为CAD的Layer才可以?

如果没有CAD的图层,该怎么做?

1个回答

您好,标绘对象是存储在CAD数据集中,所以地图中需要有一个CAD的图层,如果没有可以在代码里面新建一个CAD数据集添加到地图中,datasets.create()
9,197EXP 2020年11月11日

你好,感谢回答。

Layers layers = control.getMap().getLayers();
DatasetVectorInfo vectorInfo = new DatasetVectorInfo();
vectorInfo.setType(DatasetType.CAD);
vectorInfo.setEncodeType(EncodeType.NONE);
vectorInfo.setName(name);
DatasetVector vector = datasets.create(vectorInfo);
if (vector != null) {
    Layer layer = layers.add(vector, true);
    layer.setEditable(true);
}

我用了以上方法进行创建,但是代码执行到

DatasetVector vector = datasets.create(vectorInfo);

这一句的时候,直接崩溃了,而且没有任何崩溃日志,不知道是什么原因?

您那边有打开本地的数据源吗?可以把崩溃日志贴出来

我用try .. catch ...捕捉到了异常信息

java.lang.UnsupportedOperationException: create(DatasetVectorInfo datasetInfo) 数据集的数据源是只读的

我已经在打开数据源的时候,设置了setReadOnly参数为false,但还是出现了这个异常。

请问我该怎么正确处理这个问题?

你打开的是什么数据源呢?你可以把数据源拷贝到电脑上用iDesktop软件看一下能否新建数数据集

我打开的是我们自己服务器上的一个图,就和

http://support.supermap.com.cn:8090/iserver/services/map-china400/rest/maps/China_4326

这个图一样。

是不是这样就不行了?

这种打开只能是只读的,你必须打开一个文件型数据源UDB格式的,你可以在桌面新建一个文件型数据源,然后把udb和udd文件拷贝到设备中通过数据源的方式打开
好的,感谢,问题解决了。
...