Можно ли использовать GMap.Net Windows Form dll в WPF? - PullRequest
0 голосов
/ 24 августа 2018

Я хочу использовать GMap.net в своем проекте WPF.К сожалению, я не смог найти хороших ссылок на использование GMap.net в WPF, таких как этот источник для формы Windows, и для каждой части мне приходится много искать, чтобы использовать ее.Мой первый вопрос: есть ли хороший источник информации о том, как использовать GMap.net в WPF?Мой второй вопрос, который я вижу в SO, кто-то сказал, что использовал GMap.NET.WindowsForms.dll в WPF вместо GMap.NET.WindowsPresentation.dll.Является ли это возможным?Если да, то как?Я добавил GMap.NET.WindowsForms.dll, GMap.NET.Core.dll и System.Windows.Forms в свой проект и добавил приведенный ниже код в событие Window_Loaded, но при запуске проекта карты нет:

        GMap.NET.WindowsForms.GMapControl gmap = new GMap.NET.WindowsForms.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;

1 Ответ

0 голосов
/ 24 августа 2018

Я не нахожу никакой документации, относящейся к использованию GMap в WPF, хотя я выглядел не очень сложно.В любом случае 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.Измените их в соответствии с тем, что вы используете.

Что касается оставшихся 2 вопросов ... Да, можно использовать версию Winforms в приложении WPF.Хотя я должен спросить, почему, поскольку это становится немного более сложным и ограниченным?Но если вам нужно, ваш код в основном в порядке.Вам нужно будет добавить элемент управления WindowsFormsHost в окно WPF для размещения элемента управления winforms GMap.XAML будет выглядеть примерно так:

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

, затем в своем коде после настройки элемента управления gmap добавьте:

wfHost.Child = gmap;

, и он должен работать.

Одна вещь, которую я не думаю, что вы делаете, это использовать ОБА WPF и Winforms версии библиотеки GMap.Я получил много конфликтов и ошибок при попытке ...

...