Ejemplo n.º 1
0
        /// 重绘区域
        /// </summary>
        /// <param name="name"></param>
        /// <param name="points"></param>
        public void ReDrawArea(string name, List <MapLngLat> points)
        {
            // 先删除之前的面,再添加新的面
            if (!warnAresDic.ContainsKey(name))
            {
                return;
            }

            WarnArea area = warnAresDic[name];

            foreach (string polygonName in area.Polygons)
            {
                IMFLayer layer = globeMapLogic.GetLayer(layerName);
                if (layer == null)
                {
                    return;
                }

                layer.RemoveElement(polygonName);
            }

            bool isWarn      = area.IsWarn;
            bool isImportant = area.IsImportant;

            warnAresDic.Remove(name);

            DrawAreaGlobe(name, points, isWarn, isImportant);

            // arcmap
            IMFLayer layerMap = mapMapLogic.AddLayer(layerName);

            if (layerMap == null)
            {
                return;
            }

            IMFElement ele = layerMap.GetElement(name);

            if (ele == null)
            {
                return;
            }
            IMFPolygon polygon = ele as IMFPolygon;

            if (polygon == null)
            {
                return;
            }
            polygon.UpdatePosition(points);
        }
Ejemplo n.º 2
0
        private void DeleteAreaGlobe(string name)
        {
            IMFLayer layer = globeMapLogic.GetLayer(layerName);

            if (layer == null)
            {
                return;
            }

            WarnArea area = warnAresDic[name];

            foreach (string eleName in area.Polygons)
            {
                layer.RemoveElement(eleName);
            }

            layer.Refresh();
        }
Ejemplo n.º 3
0
        private void DrawAreaGlobe(string name, List <MapLngLat> points, bool isWarn, bool isImportant)
        {
            IMFLayer layerGlobe = globeMapLogic.AddLayer(layerName);
            WarnArea area       = new WarnArea();

            area.Name        = name;
            area.Points      = points;
            area.IsWarn      = isWarn;
            area.IsVisible   = true;
            area.IsImportant = isImportant;

            // 最后一个面
            List <MapLngLat> pLast = new List <MapLngLat>();

            pLast.Add(new MapLngLat(points[0].Lng, points[0].Lat, 0));
            pLast.Add(new MapLngLat(points[0].Lng, points[0].Lat, Atilute));
            pLast.Add(new MapLngLat(points[points.Count - 1].Lng, points[points.Count - 1].Lat, Atilute));
            pLast.Add(new MapLngLat(points[points.Count - 1].Lng, points[points.Count - 1].Lat, 0));

            Kml polygonLast = new Kml();

            polygonLast.Placemark.Name  = name + (points.Count - 1);
            polygonLast.Placemark.Graph = new KmlPolygon()
            {
                Description = name + (points.Count - 1), PositionList = pLast, OutLineColor = Color.Blue, FillColor = Color.FromArgb(80, Color.Blue), OutLineSize = 3
            };                                                                                                                                                                                                           //position

            layerGlobe.AddElement(polygonLast);

            area.Polygons.Add(name + (points.Count - 1));

            // 最上面的面
            List <MapLngLat> pUp = new List <MapLngLat>();

            for (int i = 0; i < points.Count - 1; i++)
            {
                string eleName = name + i;
                area.Polygons.Add(eleName);

                List <MapLngLat> pArr = new List <MapLngLat>();
                pArr.Add(new MapLngLat(points[i].Lng, points[i].Lat, 0));
                pArr.Add(new MapLngLat(points[i].Lng, points[i].Lat, Atilute));
                pArr.Add(new MapLngLat(points[i + 1].Lng, points[i + 1].Lat, Atilute));
                pArr.Add(new MapLngLat(points[i + 1].Lng, points[i + 1].Lat, 0));

                Kml polygonKml = new Kml();
                polygonKml.Placemark.Name  = eleName;
                polygonKml.Placemark.Graph = new KmlPolygon()
                {
                    Description = eleName, PositionList = pArr, OutLineColor = Color.Blue, FillColor = Color.FromArgb(80, Color.Blue), OutLineSize = 3
                };                                                                                                                                                                                       //position
                // 创建波束图元
                layerGlobe.AddElement(polygonKml);

                pUp.Add(new MapLngLat(points[i].Lng, points[i].Lat, Atilute));
            }

            pUp.Add(new MapLngLat(points[points.Count - 1].Lng, points[points.Count - 1].Lat, Atilute));
            Kml polygonUp = new Kml();

            polygonUp.Placemark.Name  = name + points.Count;
            polygonUp.Placemark.Graph = new KmlPolygon()
            {
                Description = name + points.Count, PositionList = pUp, OutLineColor = Color.Blue, FillColor = Color.FromArgb(80, Color.Blue), OutLineSize = 3
            };                                                                                                                                                                                                 //position
            layerGlobe.AddElement(polygonUp);
            area.Polygons.Add(name + points.Count);

            layerGlobe.Refresh();
            warnAresDic.Add(name, area);
        }