본문 바로가기
C#/WPF

[C#][WPF] 오프라인에서 mbtiles 파일로 GMap 사용하기

by 부먹짱 2021. 12. 7.
반응형

WPF로 GMap을 구현하려고 하니 너무 자료가 없어서 힘들었다.

다른 분들은 편하게 구현하길 바라며 포스팅 하게 되었다.

 

먼저 Nuget에서 아래 두가지를 다운받는다.

 

  • GMap.Net.Core
  • GMap.NET.WinPresentation

 

 

그리고 아래 소스를 다운받아 사용한다.

https://github.com/geobabbler/MBTilesMapProvider

 

GitHub - geobabbler/MBTilesMapProvider: MBTiles Map Provider for GMap.NET

MBTiles Map Provider for GMap.NET. Contribute to geobabbler/MBTilesMapProvider development by creating an account on GitHub.

github.com

 

  • GlobalMercator.cs
  • MBTilesHelper.cs
  • MBTilesMapProvider.cs

 

이렇게 3가지가 주요 파일로

GMap의 MapProvider에 mbtiles를 사용할 수 있도록 해주는 소스이다.

 

 

설치가 완료되면 GMapControl을 상속받는 클래스를 하나 생성한다.

 

using GMap.NET.WindowsPresentation;

namespace WpfApp1
{
    class MapControl : GMapControl
    {
    }
}

 

- xaml

GMap을 추가할 윈도우 혹은 페이지에 해당 클래스를 추가한다.

<local:MapControl x:Name="gmap"/>

 

- cs

아래에서 중요한 부분은 1, 2번째 줄이다. 나머지는 입맛대로 설정해주면 된다.

gmap.Manager.Mode = AccessMode.ServerAndCache;
gmap.MapProvider = new MBTilesMapProvider(@"./map.mbtiles");
gmap.Position = new PointLatLng(37, 128);
gamp.MinZoom = gmap.MapProvider.MinZoom;
gamp.MaxZoom = (int)gmap.MapProvider.MaxZoom;
gamp.Zoom = (int)gmap.MapProvider.MaxZoom;
gmap.DragButton = MouseButton.Left;
gmap.CenterCrossPen.Thickness = 0; // 지도 가운데 십자가 안보이게

 

반응형

댓글