/// 重绘区域 /// </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); }
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(); }
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); }