public MapControl()
        {
            Scale = 8;

            Maps           = new List <Gis.Map>();
            SelectionLayer = new MapLayer();
            MarkLayer      = new MapLayer();
            GridLayer      = new MapLayer();
            BaseLayer      = new MapLayer();
            AnimationLayer = new DrawingMapLayer();
            Canvas.SetZIndex(MarkLayer, 100);
            Canvas.SetZIndex(BaseLayer, -100);
            Layers = new List <MapLayer>();

            Current            = this;
            HitTestMultiResult = new Dictionary <Feature, VectorLayer>();

            base.MouseMove           += new MouseEventHandler(MapControl_MouseMove);
            base.MouseLeftButtonDown += new MouseButtonEventHandler(MapControl_MouseLeftButtonDown);
            base.MouseLeftButtonUp   += new MouseButtonEventHandler(MapControl_MouseLeftButtonUp);
            base.MouseWheel          += new MouseWheelEventHandler(MapControl_MouseWheel);
            base.MouseRightButtonUp  += (s, arg) => OnNeedToInitializeViewerTools();
            base.MouseDown           += new MouseButtonEventHandler(MapControl_MouseDown);
            base.MouseUp             += new MouseButtonEventHandler(MapControl_MouseUp);

            //CacheMode = new BitmapCache();
        }
        public MapLayer AddLayer(VectorLayer layer)
        {
            MapLayer mLayer = new DrawingMapLayer(); // mod 20130308

            //MapLayer mLayer = new MapLayer();
            mLayer.SetData(layer);
            MapControl.Current.Layers.Add(mLayer);
            MapControl.Current.Children.Add(mLayer);
            OnLayersChanged();
            RenderLayers();
            return(mLayer);
        }
        public void InitializeMap(Map map)
        {
            Map = map;
            Layers.Clear();
            Children.Clear();
            TempLayers.ForEach(x => x.Children.Clear());
            LabelLayers.ForEach(x => x.Children.Clear());

            foreach (VectorLayer layer in map.Layers)
            {
                MapLayer mLayer = new DrawingMapLayer(); // mod 20130302
                //MapLayer mLayer = new MapLayer();
                mLayer.SetData(layer);
                mLayer.AppendProperties(); // newly 20120319
                Layers.Add(mLayer);
                Children.Add(mLayer);
            }

            TempLayers.ForEach(x => this.Children.Add(x));
            LabelLayers.ForEach(x => this.Children.Add(x));
            this.ZoomExtents();
            InitialScale = Scale;
            OnLayersChanged();
        }