SuperMap.Connector.Control.Forms.MapControl.item_PolygonChanged C# (CSharp) Method

item_PolygonChanged() private method

private item_PolygonChanged ( object sender, NotifyCollectionChangedEventArgs e ) : void
sender object
e NotifyCollectionChangedEventArgs
return void
        private void item_PolygonChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            GraphicsLayer graphicsLayer = sender as GraphicsLayer;
            if (graphicsLayer != null)
            {
                if (_layerMapOverlay.ContainsKey(graphicsLayer.ID))
                {
                    GMapOverlay overlay = _layerMapOverlay[graphicsLayer.ID].GMapOverlay;
                    if (e.Action == NotifyCollectionChangedAction.Add && e.NewItems != null)
                    {
                        if (!_polygonMapGMapPolygon.ContainsKey(graphicsLayer.ID))
                        {
                            _polygonMapGMapPolygon.Add(graphicsLayer.ID, new Dictionary<string, PolygonMapGMapPolygon>());
                        }
                        foreach (Polygon polygonItem in e.NewItems)
                        {
                            if (polygonItem != null)
                            {
                                if (_polygonMapGMapPolygon[graphicsLayer.ID].ContainsKey(polygonItem.ID))
                                {
                                    graphicsLayer.Polygons.Remove(polygonItem);
                                }
                                GMapPolygon gMapPolygon = new GMapPolygon(Helper.Point2Ds2PointLatLngs(polygonItem.Point2Ds), polygonItem.ID);
                                gMapPolygon.IsVisible = true;
                                gMapPolygon.IsHitTestVisible = true;
                                gMapPolygon.Fill = new SolidBrush(polygonItem.FillColor);
                                gMapPolygon.Stroke = new Pen(polygonItem.StrokeColor, (float)polygonItem.StrokeWeight);
                                overlay.Polygons.Add(gMapPolygon);
                                _polygonMapGMapPolygon[graphicsLayer.ID].Add(polygonItem.ID, new PolygonMapGMapPolygon(polygonItem, gMapPolygon));
                            }
                        }
                    }
                    else if (e.Action == NotifyCollectionChangedAction.Remove && e.OldItems != null)
                    {
                        foreach (Polygon polygonItem in e.OldItems)
                        {
                            if (polygonItem != null)
                            {
                                overlay.Polygons.Remove(_polygonMapGMapPolygon[graphicsLayer.ID][polygonItem.ID].GMapPolygon);
                                if (_polygonMapGMapPolygon[graphicsLayer.ID].ContainsKey(polygonItem.ID))
                                {
                                    _polygonMapGMapPolygon[graphicsLayer.ID].Remove(polygonItem.ID);
                                }
                            }
                        }
                    }
                    else if (e.Action == NotifyCollectionChangedAction.Reset)
                    {
                        overlay.Polygons.Clear();
                        if (_polygonMapGMapPolygon.ContainsKey(graphicsLayer.ID))
                        {
                            _polygonMapGMapPolygon[graphicsLayer.ID].Clear();
                        }
                    }
                }
            }
        }