首页 > 解决方案 > 显示 WPF MapControl 的自定义 MapIcon

问题描述

我想在 .net core 3.1 WPF 应用程序中显示自定义地图图标。我添加了 NuGet 包Microsoft.Toolkit.Wpf.UI.Controls并将 MapControl 放在 MainWindow 上。

<map:MapControl x:Name="myMap" Loaded="OnMapLoaded" />

在代码隐藏文件中,我将 mapIcon 添加到MapElements集合中,并将 Image 设置为 mapIconStreamReference。

private void OnMapLoaded(object sender, RoutedEventArgs e)
{
    var position = new Geopoint(new BasicGeoposition() { Latitude = Latitude, Longitude = Longitude });
    MapIcon mapIcon1 = new MapIcon
    {
        Location = position,
        Image = mapIconStreamReference,
    };
    myMap.MapElements.Add(mapIcon1);
}

我尝试通过不同的方式初始化流引用:

// load by WPF pack URI:
mapIconStreamReference = RandomAccessStreamReference.CreateFromUri(new Uri("pack://application:,,,/Assets/MapPin.png"));

// load by UWP pack URI
mapIconStreamReference = RandomAccessStreamReference.CreateFromUri(new Uri("ms-appx:///Assets/MapPin.png"));

// load file into a memory stream
var fileStream = File.OpenRead(@"Assets/mappin.png");
var memStream = new MemoryStream();
fileStream.CopyTo(memStream);
mapIconStreamReference = RandomAccessStreamReference.CreateFromStream(memStream.AsRandomAccessStream());

该图像被声明为资源或内容(我尝试了所有组合)。

无论我尝试什么,地图都只显示橙色的默认地图图钉。相同的代码在 UWP 应用程序中正常工作。据我了解,工具包中的 MapControl 只是 XAML 岛中显示的 UWP MapControl 的包装器。

标签: c#wpf.net-corebing-maps

解决方案


推荐阅读