protected void AddGeoMapLayer(GeoScatterAreaMapLayer mapLayer)
        {
            mapLayer.PropertyChanged += OnMapLayerChanged;
            var dataSourceKey       = mapLayer.DataSourceKey;
            var triangulationSource = this.DataViewModel.DataSources[dataSourceKey] as TriangulationDataViewSource;

            if (triangulationSource != null)
            {
                //var triangulationSource = triangulationSource.DataSource;
                //mapLayer.SeriesView.Title = mapLayer.Title;
                //TODO use ColorValueScale
                //if (mapLayer.ColorScale.Palette.Count >= 2)
                //{
                //    var min = mapLayer.HeatScale.Brushes.First() as SolidColorBrush;
                //    var max = mapLayer.HeatScale.Brushes.Last() as SolidColorBrush;

                //    if (min != null && max != null)
                //    {
                //        mapLayer.ActualSeriesView.HeatMinimumColor = min.Color;
                //        mapLayer.ActualSeriesView.HeatMaximumColor = max.Color;
                //    }
                //}
                //mapLayer.ActualSeriesView.HeatMinimum = mapLayer.HeatScale.MinimumValue;
                //mapLayer.ActualSeriesView.HeatMaximum = mapLayer.HeatScale.MaximumValue;
                mapLayer.ActualSeriesView.ItemsSource     = triangulationSource.DataSource.Points;
                mapLayer.ActualSeriesView.TrianglesSource = triangulationSource.DataSource.Triangles;

                mapLayer.ActualSeriesView.ToolTip = mapLayer.ToolTip;

                var windowRect = this.Map.GetZoomFromGeographic(triangulationSource.DataWorldRect.ToRect());
                this.Map.WindowRect = windowRect;

                this.Map.Series.Add(mapLayer.ActualSeriesView);
            }
        }
        private void AddUnitedStatesPrecipitationLayer()
        {
            this.AddUnitedStatesPrecipitationButton.IsEnabled = false;

            var mapLayer = new GeoScatterAreaMapLayer();

            mapLayer.DataSourceKey       = DataViewModel.UnitedStatesPrecipitationKey;
            mapLayer.DataSourceTrademark = CommonStrings.SourceData_NOAA;
            mapLayer.Title                        = AppStrings.MapLayer_US_Precipitation;
            mapLayer.LabelMemberPath              = "Value";
            mapLayer.ColorScale.MinimumValue      = 0.15; // 0.05
            mapLayer.ColorScale.MaximumValue      = 1.3;  // 1.8;
            mapLayer.ColorScale.ValueStringFormat = "0.00";
            mapLayer.ColorScale.MinimumRange      = 0;    //0.15; //  0;
            mapLayer.ColorScale.MaximumRange      = 2.5;
            mapLayer.ColorScale.Palette           = new ObservableCollection <Color> {
                NamedColors.DodgerBlue.Color, NamedColors.LimeGreen.Color, NamedColors.Orange.Color, NamedColors.Maroon.Color
            };
            mapLayer.Opacity = 0.7;
            this.ViewModel.MapLayers.Insert(0, mapLayer);
        }