c# - 显示 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++ - flex-bison c ++中的对象实例
- flutter - 如何从另一个类中清除文本编辑控制器
- laravel - 在 Laravel Vue 中运行 Firebase 推送通知
- asp.net-core - Firefox 插件:同源策略不允许读取远程资源(原因:无法添加 CORS 标头 'Origin')
- symfony - 如何:自定义产品列表页面 Shopware 6
- javascript - 未捕获的 SyntaxError:位置 0 处 JSON 中的意外标记 A - JSON AJAX 请求
- java - 在 Spring 批处理中,我们可以在 Spring Boot 中由调度程序触发的多个作业中使用相同的 ItemReader 对象吗?
- django - Django / React JS 中的 Twilio TaskRouter
- android - 如何删除tablayout和工具栏之间的一条线
- flutter - Flutter 中的日期时间格式