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

TestProject.zip
다운로드

▶ MainForm.cs

using System;
using System.Data;
using System.Drawing;

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 ListSourceDataAdapter listSourceDataAdapter;

        /// <summary>
        /// 위도
        /// </summary>
        private double latitude = 0;

        #endregion

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

        #region 생성자 - MainForm()

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

            #region 타이머를 설정한다.

            this.timer.Interval = 1000;

            #endregion
            #region 리스트 소스 데이터 어댑터를 설정한다.

            this.listSourceDataAdapter = new ListSourceDataAdapter();

            listSourceDataAdapter.Mappings.Latitude  = "Latitude";
            listSourceDataAdapter.Mappings.Longitude = "Longitude";

            this.vectorItemsLayer.Data = listSourceDataAdapter;

            #endregion
            #region 이미지 컬렉션을 설정한다.

            Bitmap bitmap = new Bitmap("IMAGE\\plane.png");

            ImageCollection imageCollection = new ImageCollection();

            imageCollection.ImageSize = new Size(40, 40);

            imageCollection.Images.Add(bitmap);

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

            this.mapControl.ImageList = imageCollection;

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

            this.vectorItemsLayer.ItemImageIndex = 0;

            #endregion
            #region 이벤트를 설정한다.

            this.timer.Tick                           += timer_Tick;
            this.startButton.Click                    += startButton_Click;
            this.openStreetMapDataProvider.WebRequest += openStreetMapDataProvider_WebRequest;

            #endregion

            SetListSourceDataAdapterDataSource();
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Private
        //////////////////////////////////////////////////////////////////////////////// Event

        #region 타이머 틱 처리하기 - timer_Tick(sender, e)

        /// <summary>
        /// 타이머 틱 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void timer_Tick(object sender, EventArgs e)
        {
            SetListSourceDataAdapterDataSource();
        }

        #endregion
        #region Start 버튼 클릭시 처리하기 - startButton_Click(sender, e)

        /// <summary>
        /// Start 버튼 클릭시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void startButton_Click(object sender, EventArgs e)
        {
            if(this.timer.Enabled)
            {
                this.timer.Stop();

                this.startButton.Text = "Start";
            }
            else
            {
                this.timer.Start();

                this.startButton.Text = "Stop";
            }
        }

        #endregion
        #region OPEN STREET MAP 데이터 공급자 웹 요청시 처리하기 - openStreetMapDataProvider_WebRequest(sender, e)

        /// <summary>
        /// OPEN STREET MAP 데이터 공급자 웹 요청시 처리하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void openStreetMapDataProvider_WebRequest(object sender, MapWebRequestEventArgs e)
        {
            e.UserAgent = "XtraMap Getting Started - Connect to OpenStreetMap";
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////// Function

        #region 리스트 소스 데이터 어댑터 데이터 소스 설정하기 - SetListSourceDataAdapterDataSource()

        /// <summary>
        /// 리스트 소스 데이터 어댑터 데이터 소스 설정하기
        /// </summary>
        private void SetListSourceDataAdapterDataSource()
        {
            DataTable table = new DataTable("Table");

            table.Columns.Add("Latitude" , typeof(double));
            table.Columns.Add("Longitude", typeof(double));

            DataRow row = null;

            this.latitude += 0.5;

            if(this.latitude > 180)
            {
                this.latitude = -180;
            }

            for(int i = 1; i <= 20; i++)
            {
                row = table.NewRow();

                row["Latitude" ] = Math.Sin(latitude + i) * 76;
                row["Longitude"] = Math.Sin(latitude + i - Math.PI / 2) * 176;

                table.Rows.Add(row);
            }

            table.AcceptChanges();

            this.listSourceDataAdapter.DataSource = table;
        }

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

댓글을 달아 주세요