首页 / 浏览问题 / 移动GIS / 问题详情
android 绘制自由面
66EXP 2020年06月10日

例子中用这段代码做到绘制自由面,要怎么把绘制的面图层转成shp文件,并创建一个数据表插入几个字段值呢?

mMapControl.setAction(Action.DRAWPLOYGON);
layers.get("UserRegion@Changchun").setEditable(true);

1个回答

您好,1.绘制自由面是在数据集中绘制的,绘制完成后通过Dataconversion导出shp数据就行。

2.插入几个字段值是需要创建新的字段信息还是在已有的字段里面设置字段值。创建新的字段参考接口Fieldinfos,在已经有的字段里面设置字段值使用接口recordset.setFieldValue()
9,237EXP 2020年06月10日
是新建的字段信息,需要批量创建插入多个字段的值,看了一下api中FieldInfos方法,add添加,创建多个字段并赋值还要写多个FieldInfo方法吗?
创建多个字段就写多个FieldInfo
那创建字段的数据是在提交之前写进去,还是提交后也可以根据当前的数据集进行  新建字段并插入数值?
尽量是在绘制之前就把数据的字段信息添加进去,然后绘制提交的时候就可以设置字段值了

1.绘制自由面是在数据集中绘制的?我看mobilegis的例子是先画面,再通过监听来设置数据集的。没看到在哪里创建的数据集啊?

/**
 * 对象添加监听
 */
GeometryAddedListener geometryAddedListener = new GeometryAddedListener() {
    @Override
    public void geometryAdded(GeometryEvent Event) {
        //当点击提交时,才进行数据存储
        if ((mMapControl.getAction().equals(Action.CREATEPOINT)
                || mMapControl.getAction().equals(Action.CREATEPOLYLINE)
                || mMapControl.getAction().equals(Action.CREATEPOLYGON)
                || mMapControl.getAction().equals(Action.DRAWLINE)
                || mMapControl.getAction().equals(Action.DRAWPLOYGON)) && isFlag) {
            tmpeditdataset = (DatasetVector) Event.getLayer().getDataset();
            int[] a = {Event.getID()};
            recordset = tmpeditdataset.query(a, CursorType.DYNAMIC);


        }

    }
};
数据集可以自己创建通过数据源获取数据集dataset的。你看一下帮助文档

我之前用的是将绘制的线对象放在跟踪图层上显示,直接通过构造几何对象,但是和现在需求不一致;所以现在想用action来创建几何图层,数据集已经创建了,在layers.get("Surface" + autoIncrement + "@" + Constants.mapName).setEditable(true);这一步报空指针了,@符号前面是数据集名字,@符号后面是数据源名字,有什么问题吗?

...