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