C# GMap.NET 강좌 : 제 6강 - 이벤트
이벤트(Event)
GMap.Net에서 활용할 수 있는 별도의 이벤트(Event)
들이 있습니다.
대표적으로 지도(Map)
, 마커(Marker)
, 다각형(Polygon)
, 경로(Route)
가 있습니다.
클래스 코드
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using GMap.NET;
using GMap.NET.MapProviders;
using GMap.NET.WindowsForms;
namespace Project
{
class Map
{
public GMapControl App;
public GMapOverlay MarkerOverlay = new GMapOverlay("markers");
public GMapOverlay PolygonOverlay = new GMapOverlay("polygons");
public GMapOverlay RouteOverlay = new GMapOverlay("routes");
public Map(GMapControl app)
{
// App Connection
this.App = app;
this.App.MapProvider = GMapProviders.GoogleMap;
// Default Zoom Level
this.App.Zoom = 16;
this.App.MaxZoom = 25;
this.App.MinZoom = 10;
// Default Position
this.App.Position = new PointLatLng(37.497872, 127.0275142);
//// Default Polygon
List<PointLatLng> points = new List<PointLatLng>()
{
new PointLatLng(37.5011466156529, 127.022337913513),
new PointLatLng(37.4936900579307, 127.025878429413),
new PointLatLng(37.4957670734762, 127.032465934753),
new PointLatLng(37.5031042642487, 127.028818130493)
};
GMapPolygon polygon = new GMapPolygon(points, "강남역 사각형");
polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Black));
polygon.Stroke = new Pen(Color.Red, 1);
polygon.IsHitTestVisible = true;
PolygonOverlay.Polygons.Add(polygon);
this.App.Overlays.Add(PolygonOverlay);
//Event Binding
this.App.OnPolygonEnter += OnPolygonEnter;
this.App.OnPolygonLeave += OnPolygonLeave;
this.App.OnPolygonClick += OnPolygonClick;
this.App.OnPolygonDoubleClick += OnPolygonDoubleClick;
}
private void OnPolygonEnter(GMapPolygon item)
{
Console.WriteLine($"{item.Name} : 마우스 들어옴");
}
private void OnPolygonLeave(GMapPolygon item)
{
Console.WriteLine($"{item.Name} : 마우스 떠남");
}
private void OnPolygonClick(GMapPolygon item, MouseEventArgs e)
{
Console.WriteLine($"{item.Name} : 클릭");
}
private void OnPolygonDoubleClick(GMapPolygon item, MouseEventArgs e)
{
Console.WriteLine($"{item.Name} : 더블 클릭");
}
}
}
세부 코드
polygon.IsHitTestVisible = true;
다각형(Polygon)
이나 경로(Route)
에 이벤트를 연결하려면, IsHitTestVisible
속성을 참(true)
값으로 변경해야 합니다.
위 속성을 참 값으로 변경하면, 다각형이나 경로 위에 마우스를 올려 놓는다면, 클릭(hand)
아이콘으로 변경됩니다.
- Tip :
마커(Marker)
의IsHitTestVisible
속성은 기본값이참(true)
입니다.
//Event Binding
this.App.OnPolygonEnter += OnPolygonEnter;
this.App.OnPolygonLeave += OnPolygonLeave;
this.App.OnPolygonClick += OnPolygonClick;
this.App.OnPolygonDoubleClick += OnPolygonDoubleClick;
App
에 사용될 이벤트를 연결합니다.
마커(Marker)
, 다각형(Polygon)
, 경로(Route)
에 사용되는 이벤트는 크게 네 가지가 있습니다.
해당 오브젝트에 마우스가 들어왔을 때(Enter)
, 마우스가 나갈 때(Leave)
, 클릭 할 때(Click)
, 더블 클릭 할 때(Doubleclick)
가 있습니다.
이벤트 메서드
private void OnPolygonEnter(GMapPolygon item)
{
Console.WriteLine($"{item.Name} : 마우스 들어옴");
}
private void OnPolygonLeave(GMapPolygon item)
{
Console.WriteLine($"{item.Name} : 마우스 떠남");
}
private void OnPolygonClick(GMapPolygon item, MouseEventArgs e)
{
Console.WriteLine($"{item.Name} : 클릭");
}
private void OnPolygonDoubleClick(GMapPolygon item, MouseEventArgs e)
{
Console.WriteLine($"{item.Name} : 더블 클릭");
}
마우스 진입관련 이벤트는 해당 객체(Marker, Polygon, Route)
에 대한 정보를 받아올 수 있습니다.
이 변수를 통해 어떤 객체에서 이벤트가 발생했는지 확인할 수 있습니다.
클릭관련 이벤트는 마우스 이벤트(MouseEventArgs)
에 대한 정보도 확인할 수 있습니다.
이 변수를 통해 마우스 이벤트 마다 분기를 걸거나 조건을 설정할 수 있습니다.
GMap.Net 이벤트
지도 이벤트
메서드 | 의미 |
---|---|
OnMapDrag | 지도를 드래그 할 때 |
OnMapClick | 지도를 클릭 할 때 |
OnMapDoubleClick | 지도를 더블 클릭할 때 |
OnMapTypeChanged | 지도의 종류가 변경될 때 |
OnMapZoomChanged | 지도의 확대/축소 레벨이 변경될 때 |
마커 이벤트
메서드 | 의미 |
---|---|
OnMarkerEnter | 마커로 마우스가 들어올 때 |
OnMarkerLeave | 마커에서 마우스가 나갈 때 |
OnMarkerClick | 마커를 클릭할 때 |
OnMarkerDoubleClick | 마커를 더블 클릭할 때 |
다각형 이벤트
메서드 | 의미 |
---|---|
OnPolygonEnter | 다각형으로 마우스가 들어올 때 |
OnPolygonLeave | 다각형에서 마우스가 나갈 때 |
OnPolygonClick | 다각형을 클릭할 때 |
OnPolygonDoubleClick | 다각형을 더블 클릭할 때 |
경로 이벤트
메서드 | 의미 |
---|---|
OnRouteEnter | 경로로 마우스가 들어올 때 |
OnRouteLeave | 경로에서 마우스가 나갈 때 |
OnRouteClick | 경로를 클릭할 때 |
OnRouteDoubleClick | 경로를 더블 클릭할 때 |
출력 결과
강남역 사각형 : 마우스 들어옴
강남역 사각형 : 클릭
강남역 사각형 : 더블 클릭
강남역 사각형 : 마우스 떠남
공유하기


댓글 남기기