代码改变世界

添加线

2012-03-27 15:32  枫桥夜泊日  阅读(219)  评论(0编辑  收藏  举报

        /// <param name="layerName">图层名</param>
        /// <param name="startPoint">线段起点坐标</param>
        /// <param name="endPoint">线段终点坐标</param>
        /// <param name="shortCode">线的shortCode(线的型状也有多种,比如单箭头,双箭头等)</param>
        /// <param name="color">线的颜色</param>
        /// </summary>
        private void AddLines(string layerName, DPoint startPoint, DPoint endPoint, int shortCode, Color color)
        {
            MapInfo.Mapping.Map myMap = mapMainControl.Map;

            //获取图层和表
            FeatureLayer workLayer = (MapInfo.Mapping.FeatureLayer)myMap.Layers[layerName];
            MapInfo.Data.Table table = workLayer.Table;

            //创建线
            FeatureGeometry line = MultiCurve.CreateLine(workLayer.CoordSys, startPoint, endPoint);
            var lineDistance= line.Distance(line, DistanceUnit.Kilometer, DistanceType.Spherical,false);
            //以下两行是图形的样式
            MapInfo.Styles.SimpleLineStyle slsLine = new MapInfo.Styles.SimpleLineStyle(new LineWidth(3, LineWidthUnit.Pixel), shortCode, color);
            MapInfo.Styles.CompositeStyle lineStyle = new MapInfo.Styles.CompositeStyle(slsLine);
            //接下来创建一行数据
            MapInfo.Data.Feature ptLine = new MapInfo.Data.Feature(table.TableInfo.Columns);
           
            ptLine.Geometry = line;
            ptLine.Style = lineStyle;
            ptLine["name"] = "距离:"+lineDistance.ToString();
            ptLine["guid"] = "23";
            //将线图元加入图层
            table.InsertFeature(ptLine);
        }