[DEVEXPRESS/WINFORM] MapControl 클래스 : SelectedRegionStyle 속성을 사용해 선택 사각형 모양 설정하기
DevExpress/WinForm 2020. 6. 28. 10:46728x90
반응형
728x170
▶ MainForm.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Linq;
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";
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
#region 이미지 컬렉션을 설정한다.
ImageCollection imageCollection = new ImageCollection();
imageCollection.ImageSize = new Size(20, 20);
Bitmap bitmap = new Bitmap("IMAGE\\ship_small.png");
imageCollection.Images.Add(bitmap);
#endregion
#region 난파선 항목 리스트를 설정한다.
List<ShipwreckItem> shipwreckItemList = GetShipwreckItemList("DATA\\ships.xml");
#endregion
#region 맵 컨트롤을 설정한다.
MapControl mapControl = new MapControl();
mapControl.Parent = this;
mapControl.Dock = DockStyle.Fill;
mapControl.ImageList = imageCollection;
mapControl.CenterPoint = new GeoPoint(-37.2, 143.2);
mapControl.ZoomLevel = 5;
mapControl.SelectedRegionStyle.Fill = Color.FromArgb( 80, 255, 165, 0);
mapControl.SelectedRegionStyle.Stroke = Color.FromArgb(144, 255, 165, 0);
#endregion
#region 빙 맵 데이터 공급자를 설정한다.
BingMapDataProvider bingMapDataProvider = new BingMapDataProvider();
bingMapDataProvider.BingKey = this.bingKey;
#endregion
#region 이미지 레이어를 설정한다.
ImageLayer imageLayer = new ImageLayer();
imageLayer.DataProvider = bingMapDataProvider;
mapControl.Layers.Add(imageLayer);
#endregion
#region 리스트 소스 데이터 어댑터를 설정한다.
ListSourceDataAdapter listSourceDataAdapter = new ListSourceDataAdapter();
listSourceDataAdapter.DataSource = shipwreckItemList;
listSourceDataAdapter.Mappings.Latitude = "Latitude";
listSourceDataAdapter.Mappings.Longitude = "Longitude";
listSourceDataAdapter.AttributeMappings.Add(new MapItemAttributeMapping() { Member = "Name" , Name = "Name" });
listSourceDataAdapter.AttributeMappings.Add(new MapItemAttributeMapping() { Member = "Year" , Name = "Year" });
listSourceDataAdapter.AttributeMappings.Add(new MapItemAttributeMapping() { Member = "Description", Name = "Description" });
#endregion
#region 벡터 항목 레이어를 설정한다.
VectorItemsLayer vectorItemsLayer = new VectorItemsLayer();
vectorItemsLayer.Data = listSourceDataAdapter;
vectorItemsLayer.ItemImageIndex = 0;
mapControl.Layers.Add(vectorItemsLayer);
#endregion
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 난파선 항목 리스트 구하기 - GetShipwreckItemList(filePath)
/// <summary>
/// 난파선 항목 리스트 구하기
/// </summary>
/// <param name="filePath">파일 경로</param>
/// <returns>난파선 항목 리스트</returns>
private List<ShipwreckItem> GetShipwreckItemList(string filePath)
{
return XDocument.Load(filePath)
.Element("Ships")
.Elements("Ship")
.Select
(
e => new ShipwreckItem
(
year : Convert.ToInt32 (e.Element("Year" ).Value, CultureInfo.InvariantCulture),
name : e.Element("Name" ).Value,
description : e.Element("Description").Value,
latitude : Convert.ToDouble(e.Element("Latitude" ).Value, CultureInfo.InvariantCulture),
longitude : Convert.ToDouble(e.Element("Longitude" ).Value, CultureInfo.InvariantCulture)
)
)
.ToList();
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요