첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
다운로드

▶ MainForm.cs

using System.Data;
using System.Drawing;
using System.Windows.Forms;

using DevExpress.Utils;
using DevExpress.XtraEditors;
using DevExpress.XtraMap;

namespace TestProject
{
    /// <summary>
    /// 메인 폼
    /// </summary>
    public partial class MainForm : XtraForm
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// 빙 맵 키
        /// </summary>
        private string bingKey = "INPUT YOUR BING KEY";

        /// <summary>
        /// 맵 컨트롤
        /// </summary>
        private MapControl mapControl;

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainForm()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainForm()
        {
            InitializeComponent();

            #region 툴팁 컨트롤러를 설정한다.

            ToolTipController toolTipController = new ToolTipController();

            toolTipController.AllowHtmlText = true;

            #endregion
            #region 맵 컨트롤을 설정한다.

            this.mapControl = new MapControl();

            this.mapControl.Name              = "mapControl";
            this.mapControl.Parent            = this;
            this.mapControl.Dock              = DockStyle.Fill;
            this.mapControl.ToolTipController = toolTipController;

            #endregion
            #region 빙맵 데이터 공급자를 설정한다.

            BingMapDataProvider bingMapDataProvider = new BingMapDataProvider();

            bingMapDataProvider.BingKey = this.bingKey;

            #endregion
            #region 이미지 레이어를 설정한다.

            ImageLayer imageLayer = new ImageLayer();

            imageLayer.DataProvider = bingMapDataProvider;

            this.mapControl.Layers.Add(imageLayer);

            #endregion
            #region 인자 항목 키 공급자를 설정한다.

            ArgumentItemKeyProvider argumentItemKeyProvider = new ArgumentItemKeyProvider();

            #endregion
            #region 키 색상 색상화기를 설정한다.

            KeyColorColorizer keyColorColorizer = new KeyColorColorizer();

            keyColorColorizer.ItemKeyProvider = argumentItemKeyProvider;

            keyColorColorizer.Colors.Add(Color.FromArgb(255, 207, 98 ));
            keyColorColorizer.Colors.Add(Color.FromArgb(169, 181, 188));
            keyColorColorizer.Colors.Add(Color.FromArgb(233, 152, 118));

            #endregion
            #region 색상화기 키 항목 1을 설정한다.

            ColorizerKeyItem colorizerKeyItem1 = new ColorizerKeyItem();

            colorizerKeyItem1.Key  = 1;
            colorizerKeyItem1.Name = "Gold";

            keyColorColorizer.Keys.Add(colorizerKeyItem1);

            #endregion
            #region 색상화기 키 항목 2를 설정한다.

            ColorizerKeyItem colorizerKeyItem2 = new ColorizerKeyItem();

            colorizerKeyItem2.Key  = 2;
            colorizerKeyItem2.Name = "Silver";

            keyColorColorizer.Keys.Add(colorizerKeyItem2);

            #endregion
            #region 색상화기 키 항목 3을 설정한다.

            ColorizerKeyItem colorizerKeyItem3 = new ColorizerKeyItem();

            colorizerKeyItem3.Key  = 3;
            colorizerKeyItem3.Name = "Bronze";

            keyColorColorizer.Keys.Add(colorizerKeyItem3);

            #endregion
            #region 선형 범위 분포를 설정한다.

            LinearRangeDistribution linearRangeDistribution = new LinearRangeDistribution();

            #endregion
            #region 측정 규칙을 설정한다.

            MeasureRules measureRules = new MeasureRules();

            measureRules.RangeDistribution = linearRangeDistribution;

            measureRules.RangeStops.Add(1d );
            measureRules.RangeStops.Add(10d);
            measureRules.RangeStops.Add(20d);
            measureRules.RangeStops.Add(30d);
            measureRules.RangeStops.Add(40d);

            #endregion
            #region 데이터 셋을 설정한다.

            DataSet dataSet = new DataSet("XML DataSet");

            dataSet.ReadXml(@"DATA\rio2016.xml");

            #endregion
            #region 파이 차트 데이터 어댑터를 설정한다.

            PieChartDataAdapter pieChartDataAdapter = new PieChartDataAdapter();

            pieChartDataAdapter.ItemMaxSize         = 60;
            pieChartDataAdapter.ItemMinSize         = 20;
            pieChartDataAdapter.PieItemDataMember   = "Name";
            pieChartDataAdapter.Mappings.Latitude   = "CapitalLat";
            pieChartDataAdapter.Mappings.Longitude  = "CapitalLon";
            pieChartDataAdapter.Mappings.PieSegment = "MedalClass";
            pieChartDataAdapter.Mappings.Value      = "Quantity";
            pieChartDataAdapter.MeasureRules        = measureRules;
            pieChartDataAdapter.DataSource          = dataSet.Tables["Table1"];

            #endregion
            #region 벡터 항목 레이어를 설정한다.

            VectorItemsLayer vectorItemsLayer = new VectorItemsLayer();

            vectorItemsLayer.Colorizer      = keyColorColorizer;
            vectorItemsLayer.Data           = pieChartDataAdapter;
            vectorItemsLayer.ToolTipPattern = "<b>%A%</b>\r\nGold: %V0%\r\nSilver: %V1%\r\nBronze: %V2%\r\nTotal: %V%";

            this.mapControl.Layers.Add(vectorItemsLayer);

            #endregion
            #region 색상 리스트 레전드를 설정한다.

            ColorListLegend colorListLegend = new ColorListLegend();

            colorListLegend.Header = "Medal Class";
            colorListLegend.Layer  = vectorItemsLayer;

            this.mapControl.Legends.Add(colorListLegend);

            #endregion
            #region 크기 레전드를 설정한다.

            SizeLegend sizeLegend = new SizeLegend();

            sizeLegend.Alignment = LegendAlignment.TopRight;
            sizeLegend.Header    = "Medal Count";
            sizeLegend.Layer     = vectorItemsLayer;

            this.mapControl.Legends.Add(sizeLegend);

            #endregion

            vectorItemsLayer.DataLoaded += vectorItemsLayer_DataLoaded;
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region 벡터 항목 레이어 데이터 로드시 처리하기 - vectorItemsLayer_DataLoaded(sender, e)

        /// <summary>
        /// 벡터 항목 레이어 데이터 로드시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void vectorItemsLayer_DataLoaded(object sender, DataLoadedEventArgs e)
        {
            this.mapControl.ZoomToFitLayerItems();
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요