private void UpdateLegend(DemographicStyleBuilder styleBuilder, LegendAdornmentLayer legendAdornmentLayer) { legendAdornmentLayer.LegendItems.Clear(); if (styleBuilder is ThematicDemographicStyleBuilder) { AddThematicLegendItems(legendAdornmentLayer); } else if (styleBuilder is DotDensityDemographicStyleBuilder) { AddDotDensityLegendItems(legendAdornmentLayer); } else if (styleBuilder is ValueCircleDemographicStyleBuilder) { AddValueCircleLegendItems(legendAdornmentLayer); } else if (styleBuilder is PieChartDemographicStyleBuilder) { AddPieGraphLegendItems(legendAdornmentLayer); } legendAdornmentLayer.ContentResizeMode = LegendContentResizeMode.Fixed; legendAdornmentLayer.Height = GetLegendHeight(legendAdornmentLayer); legendAdornmentLayer.Width = GetLegendWidth(legendAdornmentLayer); }
private void UpdateUIControls(DemographicStyleBuilder activeStyleBuilder) { avoidUpdatingMap = true; foreach (var item in cbxActiveColor.SimpleColors) { GeoColor styleColor = activeStyleBuilder.Color; if (item.Value.R == styleColor.RedComponent && item.Value.G == styleColor.GreenComponent && item.Value.B == styleColor.BlueComponent) { cbxActiveColor.SetSelectedColor(item.Key); break; } } ThematicDemographicStyleBuilder activeThematicSetting = activeStyleBuilder as ThematicDemographicStyleBuilder; if (activeThematicSetting != null) { foreach (var item in cbxActiveEndColor.SimpleColors) { GeoColor styleColor = activeThematicSetting.EndColor; if (item.Value.R == styleColor.RedComponent && item.Value.G == styleColor.GreenComponent && item.Value.B == styleColor.BlueComponent) { cbxActiveEndColor.SetSelectedColor(item.Key); break; } } cbxSelectColorWheelDirection.SelectedIndex = (int)activeThematicSetting.ColorWheelDirection; } avoidUpdatingMap = false; }
public void UpdateUIControls(DemographicStyleBuilder activeSettingViewModel) { GeoColor[] colors = GeoColorList.Select(c => c.GeoColor).ToArray(); for (int i = 0; i < colors.Length; i++) { if (colors[i].Equals(activeSettingViewModel.Color)) { currentStyleBuilder = activeSettingViewModel; SelectedColorItem = GeoColorList[i]; break; } } ThematicDemographicStyleBuilder thematicDemographicStyleBuilder = activeSettingViewModel as ThematicDemographicStyleBuilder; if (thematicDemographicStyleBuilder != null) { GeoColor styleColor = thematicDemographicStyleBuilder.EndColor; for (int i = 0; i < colors.Length; i++) { if (colors[i].Equals(styleColor)) { currentStyleBuilder = activeSettingViewModel; SelectedEndColorItem = GeoColorList[i]; break; } } } }
// This method would be called whenever the style needs to updated private void dataSelectorUserControl_StyleUpdated(object sender, StyleUpdatedDataSelectorUserControlEventArgs e) { HideStyleControls(); DataSelectorUserControl dataSelectorUserControl = sender as DataSelectorUserControl; LegendAdornmentLayer legendAdornmentLayer = (LegendAdornmentLayer)map.AdornmentOverlay.Layers[0]; // Here we update the styleBuilder and UI according to the style builder type passed from the data selector user control. switch (e.DemographicStyleBuilderType) { case DemographicStyleBuilderType.ValueCircle: currentStyleBuilder = new ValueCircleDemographicStyleBuilder(); trackBarValueCirleRadio.Visible = true; lblValueCircle.Visible = true; legendAdornmentLayer.Title.TextStyle.TextColumnName = e.ActivatedStyleSelectors[0].LegendTitle; break; case DemographicStyleBuilderType.DotDensity: currentStyleBuilder = new DotDensityDemographicStyleBuilder(); lblFewer.Visible = true; lblMore.Visible = true; trackBarDots.Visible = true; lblDotDensityUnit.Visible = true; legendAdornmentLayer.Title.TextStyle.TextColumnName = e.ActivatedStyleSelectors[0].LegendTitle; break; case DemographicStyleBuilderType.PieChart: currentStyleBuilder = new PieChartDemographicStyleBuilder(); foreach (StyleSelectorUserControl item in e.ActivatedStyleSelectors) { ((PieChartDemographicStyleBuilder)currentStyleBuilder).SelectedColumnAliases.Add(item.Alias); } legendAdornmentLayer.Title.TextStyle.TextColumnName = dataSelectorUserControl.Title; break; case DemographicStyleBuilderType.Thematic: default: currentStyleBuilder = new ThematicDemographicStyleBuilder(); lblDisplayEndColor.Visible = true; lblColorWheelDirection.Visible = true; cbxActiveEndColor.Visible = true; cbxSelectColorWheelDirection.Visible = true; legendAdornmentLayer.Title.TextStyle.TextColumnName = e.ActivatedStyleSelectors[0].LegendTitle; lblDisplayColor.Text = "Display Start Color"; break; } foreach (StyleSelectorUserControl activatedStyleSelector in e.ActivatedStyleSelectors) { currentStyleBuilder.SelectedColumns.Add(activatedStyleSelector.ColumnName); } // Update UI and map. UpdateUIControls(currentStyleBuilder); UpdateMap(currentStyleBuilder); }
private void MainForm_Load(object sender, EventArgs e) { map.MapUnit = GeographyUnit.Meter; map.ZoomLevelSet = new ThinkGeoCloudMapsZoomLevelSet(); map.CurrentExtent = new RectangleShape(-13059527, 6484023, -8632838, 2982361); // Please input your ThinkGeo Cloud Client ID / Client Secret to enable the background map. ThinkGeoCloudRasterMapsOverlay thinkGeoCloudMapsOverlay = new ThinkGeoCloudRasterMapsOverlay("ThinkGeo Cloud Client ID", "ThinkGeo Cloud Client Secret"); map.Overlays.Add(thinkGeoCloudMapsOverlay); // Add Demographic Layer customFeatureLayer = new ShapeFileFeatureLayer(); censusStateFeatureLayer = new ShapeFileFeatureLayer(@"../../App_Data/usStatesCensus2010.shp"); censusStateFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; currentFeatureLayer = censusStateFeatureLayer; LayerOverlay demographicLayerOverlay = new LayerOverlay(); demographicLayerOverlay.Layers.Add(currentFeatureLayer); map.Overlays.Add("DemographicLayerOverlayKey", demographicLayerOverlay); // Add Highlight Overlay HighlightOverlay USDemographicOverlay = new HighlightOverlay(); map.Overlays.Add("HighlightOverlayKey", USDemographicOverlay); // Initialize style builder to Thematic currentStyleBuilder = new ThematicDemographicStyleBuilder(); currentStyleBuilder.SelectedColumns.Add("Population"); // Initialize the Legend LegendAdornmentLayer legendAdornmentLayer = new LegendAdornmentLayer(); legendAdornmentLayer.Location = AdornmentLocation.LowerLeft; legendAdornmentLayer.Title = new LegendItem(); legendAdornmentLayer.Title.ImageJustificationMode = LegendImageJustificationMode.JustifyImageRight; legendAdornmentLayer.Title.TopPadding = 10; legendAdornmentLayer.Title.BottomPadding = 10; legendAdornmentLayer.Title.TextStyle = new TextStyle("Population", new GeoFont("Segoe UI", 12), new GeoSolidBrush(GeoColor.SimpleColors.Black)); map.AdornmentOverlay.Layers.Add(legendAdornmentLayer); //map.ZoomToScale(map.ZoomLevelSet.ZoomLevel14.Scale); // Update the controls and map. UpdateUIControls(currentStyleBuilder); UpdateMap(currentStyleBuilder); LoadDataSelectorUserControls(); }
private void UpdateMap(DemographicStyleBuilder styleBuilder) { if (!avoidUpdatingMap) { Collection <Style> activeStyles = styleBuilder.GetStyles(currentFeatureLayer.FeatureSource); currentFeatureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Clear(); foreach (Style activeStyle in activeStyles) { currentFeatureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(activeStyle); } LegendAdornmentLayer legendAdornmentLayer = (LegendAdornmentLayer)map.AdornmentOverlay.Layers[0]; UpdateLegend(currentStyleBuilder, legendAdornmentLayer); map.Refresh(); } }
private void RenderDemographicStyle(object sender, DemographicStyleBuilder demographicStyleBuilder) { FrameworkElement frameworkElement = (FrameworkElement)sender; ColumnViewModel columnViewModel = (ColumnViewModel)frameworkElement.DataContext; columnViewModel.IsSelected = true; foreach (var item in mainWindowViewModel.SelectedCategory.Columns) { item.CheckBoxVisiblity = Visibility.Hidden; } mainWindowViewModel.UpdateUIControls(demographicStyleBuilder); mainWindowViewModel.CurrentStyleBuilder.SelectedColumns.Clear(); mainWindowViewModel.CurrentStyleBuilder.SelectedColumns.Add(columnViewModel.ColumnName); mapModel.LegendTitle = columnViewModel.LegendTitle; mainWindowViewModel.UpdateMap(); }
private void UpdateLegend(DemographicStyleBuilder styleBuilder, LegendAdornmentLayer legendAdornmentLayer) { legendAdornmentLayer.LegendItems.Clear(); if (styleBuilder is ThematicDemographicStyleBuilder) { AddThematicLegendItems(legendAdornmentLayer); } else if (styleBuilder is DotDensityDemographicStyleBuilder) { AddDotDensityLegendItems(legendAdornmentLayer); } else if (styleBuilder is ValueCircleDemographicStyleBuilder) { AddValueCircleLegendItems(legendAdornmentLayer); } else if (styleBuilder is PieChartDemographicStyleBuilder) { AddPieGraphLegendItems(legendAdornmentLayer); } legendAdornmentLayer.ContentResizeMode = LegendContentResizeMode.Fixed; legendAdornmentLayer.Height = GetLegendHeight(legendAdornmentLayer); legendAdornmentLayer.Width = GetLegendWidth(legendAdornmentLayer); }
public void UpdateUIControls(DemographicStyleBuilder activeSettingViewModel) { GeoColor[] colors = GeoColorList.Select(c => c.GeoColor).ToArray(); for (int i = 0; i < colors.Length; i++) { if (colors[i].Equals(activeSettingViewModel.Color)) { currentStyleBuilder = activeSettingViewModel; SelectedColorItem = GeoColorList[i]; break; } } ThematicDemographicStyleBuilder thematicDemographicStyleBuilder = activeSettingViewModel as ThematicDemographicStyleBuilder; if (thematicDemographicStyleBuilder != null) { GeoColor styleColor = thematicDemographicStyleBuilder.EndColor; for (int i = 0; i < colors.Length; i++) { if (colors[i].Equals(styleColor)) { currentStyleBuilder = activeSettingViewModel; SelectedEndColorItem = GeoColorList[i]; break; } } } }
private void RenderDemographicStyle(object sender, DemographicStyleBuilder demographicStyleBuilder) { FrameworkElement frameworkElement = (FrameworkElement)sender; ColumnViewModel columnViewModel = (ColumnViewModel)frameworkElement.DataContext; columnViewModel.IsSelected = true; foreach (var item in mainWindowViewModel.SelectedCategory.Columns) { item.CheckBoxVisiblity = Visibility.Hidden; } mainWindowViewModel.UpdateUIControls(demographicStyleBuilder); mainWindowViewModel.CurrentStyleBuilder.SelectedColumns.Clear(); mainWindowViewModel.CurrentStyleBuilder.SelectedColumns.Add(columnViewModel.ColumnName); mapModel.LegendTitle = columnViewModel.LegendTitle; mainWindowViewModel.UpdateMap(); }