private void InitializeMap(Map map) { map.MapUnit = GeographyUnit.DecimalDegree; map.MapTools.Logo.Enabled = true; map.MapBackground = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF")); map.CurrentExtent = new RectangleShape(-128.17864375, 56.9286546875, -69.11614375, 20.1903734375); // base map layers WorldStreetsAndImageryOverlay worldMapKitOverlay = new WorldStreetsAndImageryOverlay(); map.CustomOverlays.Add(worldMapKitOverlay); // us states layer ShapeFileFeatureLayer statesLayer = new ShapeFileFeatureLayer(Server.MapPath(ConfigurationManager.AppSettings["UsShapefilePath"])); ThematicDemographicStyleBuilder selectedStyle = new ThematicDemographicStyleBuilder(new Collection <string>() { "Population" }); statesLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(selectedStyle.GetStyle(statesLayer.FeatureSource)); statesLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; map.DynamicOverlay.Layers.Add("usStatesLayer", statesLayer); // highlight layers map.HighlightOverlay.HighlightStyle = new FeatureOverlayStyle(GeoColor.FromArgb(150, GeoColor.FromHtml("#449FBC")), GeoColor.FromHtml("#014576"), 1); map.HighlightOverlay.Style = new FeatureOverlayStyle(GeoColor.SimpleColors.Transparent, GeoColor.SimpleColors.Transparent, 0); statesLayer.Open(); foreach (Feature feature in statesLayer.FeatureSource.GetAllFeatures(ReturningColumnsType.NoColumns)) { map.HighlightOverlay.Features.Add(feature.Id, feature); } statesLayer.Close(); // Add hover-popup CloudPopup featureinfoPopup = new CloudPopup("featureInfoPopup", new PointShape(-98.64739375, 38.5595140625), "State Info"); // make the popup out of map view temporarily featureinfoPopup.AutoSize = true; map.Popups.Add(featureinfoPopup); // Add Legend adorment overlay LegendAdornmentLayer legendAdornmentLayer = new LegendAdornmentLayer(); legendAdornmentLayer.Location = AdornmentLocation.LowerLeft; legendAdornmentLayer.XOffsetInPixel = 10; 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); ThematicDemographicStyleBuilder initDemographicStyle = new ThematicDemographicStyleBuilder(new Collection <string>() { "Population" }); UpdateLegend(initDemographicStyle, map); }
private bool UpdateMapAndLegend(JsonCallbackRequest callbackRequest, Map map) { // Get the requested sub-categories Category selectedCategory = null; Collection <CategoryItem> selectedCategoryItems = new Collection <CategoryItem>(); if (callbackRequest.StyleBuildType == DemographicStyleBuilderType.PieChart) { selectedCategoryItems = GetCategoryItemByAlias(callbackRequest.SelectedCategoryItems, ref selectedCategory); } else { selectedCategoryItems = GetCategoryItemByAlias(new Collection <string>() { callbackRequest.RequestColumnAlias }, ref selectedCategory); } DemographicStyleBuilder demographicStyle = null; switch (callbackRequest.StyleBuildType) { case DemographicStyleBuilderType.PieChart: demographicStyle = new PieChartDemographicStyleBuilder(); foreach (CategoryItem categoryItem in selectedCategoryItems) { ((PieChartDemographicStyleBuilder)demographicStyle).SelectedColumnAliases.Add(categoryItem.Alias); } if (!string.IsNullOrEmpty(callbackRequest.StartColor)) { ((PieChartDemographicStyleBuilder)demographicStyle).Color = GeoColor.FromHtml(callbackRequest.StartColor); } break; case DemographicStyleBuilderType.Thematic: demographicStyle = new ThematicDemographicStyleBuilder(); if (!string.IsNullOrEmpty(callbackRequest.StartColor)) { ((ThematicDemographicStyleBuilder)demographicStyle).StartColor = GeoColor.FromHtml(callbackRequest.StartColor); } if (!string.IsNullOrEmpty(callbackRequest.EndColor)) { ((ThematicDemographicStyleBuilder)demographicStyle).EndColor = GeoColor.FromHtml(callbackRequest.EndColor); } if (!string.IsNullOrEmpty(callbackRequest.ColorWheelDirection)) { ((ThematicDemographicStyleBuilder)demographicStyle).ColorWheelDirection = callbackRequest.ColorWheelDirection.Equals("Clockwise") ? ColorWheelDirection.Clockwise : ColorWheelDirection.CounterClockwise; } break; case DemographicStyleBuilderType.DotDensity: demographicStyle = new DotDensityDemographicStyleBuilder(); if (!string.IsNullOrEmpty(callbackRequest.StartColor)) { ((DotDensityDemographicStyleBuilder)demographicStyle).Color = GeoColor.FromHtml(callbackRequest.StartColor); } if (callbackRequest.SliderValue > 0) { ((DotDensityDemographicStyleBuilder)demographicStyle).DotDensityValue = 50 * (callbackRequest.SliderValue / 3.0); } break; case DemographicStyleBuilderType.ValueCircle: demographicStyle = new ValueCircleDemographicStyleBuilder(); if (!string.IsNullOrEmpty(callbackRequest.StartColor)) { ((ValueCircleDemographicStyleBuilder)demographicStyle).Color = GeoColor.FromHtml(callbackRequest.StartColor); } if (callbackRequest.SliderValue > 0) { ((ValueCircleDemographicStyleBuilder)demographicStyle).RadiusRatio = callbackRequest.SliderValue / 3.0; } break; default: break; } foreach (CategoryItem categoryItem in selectedCategoryItems) { demographicStyle.SelectedColumns.Add(categoryItem.ColumnName); } ShapeFileFeatureLayer statesLayer = map.DynamicOverlay.Layers["usStatesLayer"] as ShapeFileFeatureLayer; statesLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Clear(); Style selectedStyle = demographicStyle.GetStyle(statesLayer.FeatureSource); statesLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(selectedStyle); statesLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; map.DynamicOverlay.Redraw(); // update the legend based on the selected style UpdateLegend(demographicStyle, map); return(true); }