在WPF中使用XAML岛的MapControl:默认地图层显示在自定义平铺层上
我已经在我的WPF应用程序中添加了一个在WPF中使用XAML岛的MapControl:默认地图层显示在自定义平铺层上,wpf,xaml,xaml-islands,Wpf,Xaml,Xaml Islands,我已经在我的WPF应用程序中添加了一个MapControlusing。我想向其中添加自定义地图层,因此我使用添加了一个OpenStreetMap平铺层。我想删除默认映射,但它不起作用 我已经在UWP应用程序中测试了原始的MapControl,它可以正常工作 我在WPF中的代码: 公共部分类主窗口:窗口 { 公共主窗口() { 初始化组件(); HttpAptileDataSource=新的HttpAptileDataSource(“http://c.tile.openstreetmap.or
MapControl
using。我想向其中添加自定义地图层,因此我使用添加了一个OpenStreetMap
平铺层。我想删除默认映射,但它不起作用
我已经在UWP应用程序中测试了原始的MapControl
,它可以正常工作
我在WPF中的代码:
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
HttpAptileDataSource=新的HttpAptileDataSource(“http://c.tile.openstreetmap.org/{zoomlevel}/{x}/{y}.png”);
MapTileSource tileSource=新的MapTileSource(数据源);
tileSource.Visible=true;
tileSource.Layer=MapTileLayer.BackgroundReplacement;
tileSource.IsFadingEnabled=false;
mapControl.Style=Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT.MapStyle.None;
mapControl.TileSources.Add(tileSource);
}
}
这是WPF应用程序。它在顶部显示OpenStreetMap
图层和默认的Bing
地图图层:
这是UWP应用程序,仅完美显示OpenStreetMap
:
在WPF中有解决方案吗
更新
我发现这一行应用不正确,导致了错误:
mapControl.Style=Microsoft.Toolkit.Win32.UI.Controls.Interop.WinRT.MapStyle.None;
我终于找到了解决方案。将以下行添加到初始化代码:
Windows.UI.Xaml.Controls.Maps.MapControl原始控件=
mapControl.GetUwpInternalObject()作为Windows.UI.Xaml.Controls.Maps.mapControl;
if(originalMapControl!=null)
{
originalMapControl.Style=MapStyle.None;
}
它修复了这个缺陷。您考虑过使用一个吗?@Clemens是的。我用过。但是我有一些性能限制,
Xaml.MapControl
的CPU
使用率高于uwpmappontrol。(高达20%)