首页 / 浏览问题 / 组件GIS / 问题详情
超图iObject怎么通过代码修改一个图层(例如点线面)中所有地图符号
14EXP 2020年09月24日
我能想到的只有通过recordset重新setgeometry但是有没有其他方法

1个回答

通过Layer..AdditionalSetting 属性获取到图层信息类,因为是点线面,将获取出来的信息类强制转换为LayerSettingVector,然后设置LayerSettingVector的style属性,这个就是针对整个矢量数据集图层设置风格。
4,620EXP 2020年09月24日
试了,但是没有效果啊,刷新mapcontrol和map都没有效果,是不是还有其他细节
你代码怎么写的,贴出来看一下
LayerSettingVector lsv = (LayerSettingVector)map.Layers[j].AdditionalSetting;
                 GeoStyle geo = new GeoStyle();
                    //geo.FromXML(recordset.GetFieldValue("Symbol").ToString());
                    geo.FillBackColor = Color.Red;
                    geo.FillForeColor = Color.Red;
                    geo.LineColor = Color.Red;
                    lsv.Style = geo;
                    map.Layers[j].AdditionalSetting = lsv;
                    this.thismap.Refresh();
                    this.thismap.Map.Refresh();
你的图层对应的数据集是什么类型的数据集
点线面类型的数据集
LayerSettingVector lsv = (LayerSettingVector)m_mapControl.Map.Layers[0].AdditionalSetting;
            lsv.Style.MarkerSize = new Size2D(12, 12);
            this.m_mapControl.Map.Refresh();

没有问题,上面代码修改了图层点符号的大小,需要注意的就是针对符号geostyle来说,有些属性是针对点对象的,有些是针对线对象风格的,每一个参数是对什么类型对象设置什么类型风格在帮助文档里面有详细的讲解,可以看一下,唯一注意的是LineColor 是针对点、线对象设置颜色。
...