首页 / 浏览问题 / 移动GIS / 问题详情
SuperMap iMobile for Android 几何对象编辑问题
7EXP 2020年09月01日

实现步骤:

第一步:操作图层设置

//设置图层可显示,设置为true,表示图层可显示,false,表示图层不显示。

layer. setVisible (true);

//设置操作图层可编辑,设置为true,表示矢量图层可编辑,false,表示矢量图层不可编辑。

layer.setEditable(true);

//设置操作图层可选择,设置为true,表示矢量图层可选择,false,表示矢量图层不可选择。

layer.setSelectable(true);

第二步:设置对象操作类型为单选

//设置对象操作类型为单选

mapControl.setAction(Action.SELECT);

第三步:设置对象操作类型为编辑节点

//设置对象操作类型编辑节点

mapControl.setAction(Action.VERTEXEDIT);

第四步:在设备上交互式编辑节点

  1. 触发单选动作
  2. 在地图窗口中的可编辑图层中点选一个几何对象,抬起手指;
  3. 触发编辑节点动作
  4. 单指按住几何对象的一个节点,拖动到合适的位置后,抬起手指;
  5. 抬起手指即完成一次节点编辑操作。
  6. 提交

mapControl.submit();

这个示例代码看得不是很懂,对节点的编辑拖动是不是有什么事件?我地图上按住节点拖不了啊,只能点一下多了一个点。

2 个回答

   //设置动作变话监听器

        mMapControl.addActionChangedListener(new MapDrawListener());

        //设置编辑状态监听器

        mMapControl.setEditStatusListener(new MapEditStatusListener());




 /**
     * 绘制动作变化监听器

     */
    class MapDrawListener implements ActionChangedListener {

        @Override
        public void actionChanged(Action oldAction, Action newAction) {

            if(oldAction == Action.CREATEPOINT){

                btnDrawPoint.setBackgroundResource(R.drawable.btnbackoff);

            }else if(oldAction == Action.CREATEPOLYLINE){

                btnDrawPolyLine.setBackgroundResource(R.drawable.btnbackoff);

            }else if(oldAction == Action.CREATEPOLYGON){

                btnDrawPolygon.setBackgroundResource(R.drawable.btnbackoff);

            }else if(oldAction == Action.VERTEXEDIT){

                btnEditNode.setBackgroundResource(R.drawable.btnbackoff);
            }

        }
    }



 /**
     * 地图编辑状态监听器
     *
     */
    class MapEditStatusListener implements EditStatusListener {

        @Override
        public void addNodeEnable(boolean enable) {

            if(enable){

                btnAddNode.setBackgroundResource(R.drawable.btnback);

            }else{

                btnAddNode.setBackgroundResource(R.drawable.btnbackoff);
            }

        }

        @Override
        public void deleteNodeEnable(boolean enable) {

            if(enable){

                btnRemoveNode.setBackgroundResource(R.drawable.btnback);

            }else{

                btnRemoveNode.setBackgroundResource(R.drawable.btnbackoff);
            }
        }

        @Override
        public void finishGeometryEdited(FinishEditedEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeFinishGeometryEdited(FinishEditedEvent arg0) {
            // TODO Auto-generated method stub

        }
    }





这个官方的   怎么操作节点呢   新人布晓得

7EXP 2020年09月01日
您好,帮助文档说明了操作节点的详细步骤,首先在加载地图的时候可以设置地图的Action为select。可以使用一个按钮来设置操作节点的Action:Action.VERTEXEDIT。然后点击节点进行拖动就可以了,具体代码可以参考示范demo:编辑绘制 安装目录\SampleCode\MapEdit
9,192EXP 2020年09月02日
...