示例#1
0
        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);
        }
示例#2
0
        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);
        }