UWP:MapControl透明背景

8
我正在使用 MapBox 显示一个特定区域的自定义地图。在 MapBox 中,我的特定区域是黄色的,而地图的其余部分是透明的(请参见下面的图像)。

In MapBox

我想实现的目标是:在背景图片上放置 MapControl。这样,当地图瓦片为透明时,我就可以看到背景图片。
我的问题是:在我的 UWP 应用程序中,地图的特定区域(黄色)显示正确,但其余部分为黑色,因此地图隐藏了背景图片。
MapBox 没有问题,因为生成的瓦片是透明的。我认为问题出在我的应用程序中。
我尝试将 MapControl 的背景设置为透明,但没有成功。
XAML
<Image x:Name="background" 
       Stretch="UniformToFill"
       HorizontalAlignment="Stretch"
       VerticalAlignment="Stretch"/>

<maps:MapControl x:Name="MyMap" 
                 Background="Transparent"
                 HorizontalAlignment="Stretch" 
                 VerticalAlignment="Stretch"
                 MapServiceToken="TOKEN"/>

C#

HttpMapTileDataSource leaflet = new HttpMapTileDataSource(
            "URL_TO_MAPBOX_API");

MapTileSource mts = new MapTileSource(leaflet);
mts.IsTransparencyEnabled = true;
mts.AllowOverstretch = true;
mts.IsFadingEnabled = false;
this.MyMap.TileSources.Add(mts);
this.MyMap.Style = MapStyle.None;

我是否做错了什么,还是这根本不可能?谢谢你的帮助。

你尝试过更改MapTileSource的图层吗?例如,mts.Layer = MapTileLayer.BackgroundReplacement; - Kuba
刚试了一下,不幸的是什么都没改变 :(. 不管怎样还是谢谢 :) - Sudo
地图控件的背景属性是否完全被忽略了?如果没有,您可以使用ImageBrush属性设置背景,例如<MapsControl.Background><ImageBrush .../></MapsControl.Background> - DevAttendant
好的,background 属性并没有被忽略,在 MapControl 加载时我可以看到。就在瓦片出现之前。我尝试使用 ImageBrush 设置 background 属性,但是没有成功。 - Sudo
1
我是通过放置两个瓷砖来实现这一点的。一个是带有常量背景图像或瓷砖(一个常量比特流颜色),另一个是我想要展示的瓷砖,当瓷砖正在加载时,会显示常量比特流颜色,当瓷砖加载完成后,将显示该瓷砖。 - iam.Carrot
这是个好主意,谢谢你。但是我的背景图片不仅仅是单一的颜色(比如只是一个纯蓝色的图像)。我也考虑过将背景图片作为地图盒中的图案,但我的背景图片非常复杂,我无法将其转换为图案。 - Sudo
1个回答

0

MapControl 是一个非常复杂的控件。它使用 SwapChainPanel 与 Direct X 进行交互。如果您尝试做的事情是可能的,那将令我感到惊讶。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接