是否可以在WPF中使用GMap.Net Windows窗体dll?

时间:2018-08-24 13:44:18

标签: wpf gmap.net

我想在我的WPF项目中使用GMap.net。 不幸的是,对于Windows窗体,我找不到像this source这样的WPF中使用GMap.net的任何好的参考资料,对于每个部分,我都需要大量搜索才能使用它。 我的第一个问题是,关于如何在WPF中使用GMap.net,有什么好的资料? 我的第二个问题是,在SO中看到有人告诉我在WPF中使用了GMap.NET.WindowsForms.dll而不是GMap.NET.WindowsPresentation.dll。可能吗?如果是,怎么办? 我在项目中添加了GMap.NET.WindowsForms.dll,GMap.NET.Core.dll和System.Windows.Forms,并将以下代码添加到Window_Loaded事件中,但是在项目运行时没有映射:

from zipfile import ZipFile
import requests
import pandas as pd

url = 'https://www.foedevarestyrelsen.dk/_layouts/15/sdata/smileystatus.zip'
df = pd.read_csv(url, 
                 compression = "zip")

1 个答案:

答案 0 :(得分:1)

我没有找到任何有关在WPF中使用GMap的文档,尽管我看上去并不难。无论如何,api都是非常相似的。在将NuGet pkg GMap.NET.Presentation添加到项目中之后,您显示的代码仅需进行少量修改:

GMap.NET.WindowsPresentation.GMapControl gmap = new GMap.NET.WindowsPresentation.GMapControl ();
gmap.MapProvider = GMap.NET.MapProviders.GoogleMapProvider.Instance;
GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;
gmap.Position = new GMap.NET.PointLatLng (48.8589507, 2.2775175);
gmap.Width = 500;
gmap.Height = 500;
gmap.Zoom = 13;
gmap.ShowCenter = false;

mainGrid.Children.Add (gmap);
Grid.SetColumn (gmap, 1);
gmap.Margin = new Thickness (10, 200, 10, 10);

最后3行假定您将其放入Grid控件中。更改它们以匹配您的使用情况。

关于剩下的两个问题...是的,可以在WPF应用程序中使用Winforms版本。尽管我不得不问为什么它变得更加复杂和有限?但是,如果必须的话,您的代码通常就可以了。您将需要在WPF窗口中添加一个WindowsFormsHost控件,以托管winforms GMap控件。 XAML可能是这样的:

<WindowsFormsHost x:Name="wfHost" Margin="10,160,10,10"/>

然后在您的代码中,设置gmap控件后,添加:

wfHost.Child = gmap;

它应该可以工作。

我不认为您需要做的一件事就是同时使用GMap库的WPF和Winforms版本。我尝试时遇到很多冲突和错误...