C# WPF offline MAP 지형 구현

안녕하세요. 최근 MFC 로 작성된 코드를 WPF C#으로 변경 중
막히는 부분이 있어 고견을 듣고자 글을 쓰게 되었습니다.

무료로 이용이 가능해야 한다는 부분의 제약 사항이 존재 합니다.

문제1. 무료로 제공하는 지도 맵을 offline에서 확인하는 방법을 GMAP.NET을 통해 구현하려 했으나, 무료로 제공되는 맵 or 맵의 크기로 인해 막히게 되었습니다. 뿐만아니라, 사용 예가 충분하지 않아 많은 어려움을 겪고 있습니다. ㅠㅠ 혹시 같은 경험이나 좋은 해결책이 있는지 공유 부탁 드립니다.

문제2. Windowsformsintegration의 hosting기능을 통해 wpf에서 winform코드와 EGIS.Controls를 사용하는 방법으로 shp 파일을 읽어와 표시하는 기능을 구현했지만, 지도 위에 TextControl등 다양한 control을 표시하는데 문제가 발생하여 어떻게 해결해야 할지 막막해 글을 올리게 되었습니다.
Z-ordering으로 해결이 안되는데 혹시 다른 방법이나 해결책을 알고 계시면 공유 부탁 드리겠습니다.

감사합니다.

GMAP.NET 에 대해 잘 소개한 글 공유 드립니다.
C# GMap.NET 강좌 : 제 1강 - 소개 및 설치 - YUN DAE HEE

zorder를 활용해서 Windowsformsintegration 위에 무언가를 그리는 방법은 디자인적 한계로 존재하지 않는 것으로 알려져 있습니다.

In a WPF user interface, you can change the z-order of elements to control overlapping behavior. A hosted Windows Forms control is drawn in a separate HWND, so it is always drawn on top of WPF elements.
A hosted Windows Forms control is also drawn on top of any Adorner elements.

WPF 컨트롤들을 찾아보셔야 되지 않을까 싶네요.
대부분 상용 컴포넌트로 보입니다.

  • MapSui for WPF
  • DotSpatial
  • ArcGIS Runtime WPF
  • SharpMap
  • GMap
  • ThinkGeo Desktop Maps
2개의 좋아요

WindowsFormsHost가 항상 top이라 WPF 컨트롤를 올릴 수 없는 이슈를 work-around한 패키지가 존재하네요.
공유 드립니다.
다만 성능 저하 이슈가 있어서 감안해야 된다고 하네요.

사용법

xmlns:asf="clr-namespace:AirspaceFixer;assembly=AirspaceFixer"

<asf:AirspacePanel FixAirspace="{Binding FixAirspace}">
    <WebBrowser x:Name="Browser" />
</asf:AirspacePanel>

다른 방법

2개의 좋아요