gpt4 book ai didi

c# - map 控件 : Remove or hide default map layer

转载 作者:行者123 更新时间:2023-11-30 17:46:41 25 4
gpt4 key购买 nike

在我的 Windows Phone 8 应用程序中,我使用自定义 TileSource 以通过这种方式将默认 map 背景与自定义图 block 重叠:

C#:

public class CustomTileSource : TileSource
{
public CustomTileSource()
{
UriFormat ="http://myurl/{0}/{1}/{2}.png";
}

public override Uri GetUri(int x, int y, int zoomLevel)
{

if (zoomLevel > 0 && zoomLevel <= 18)
{
var url = string.Format(UriFormat, zoomLevel, x, y);
return new Uri(url);
}
//if zoom level is not supported, return null
return null;
}
}

XAML:

...
xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
xmlns:tileSource="clr-namespace:Mappa"
...

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<maps:Map x:Name="Map" Center="45,9" ZoomLevel="14">
<maps:Map.TileSources>
<tileSource:CustomTileSource />
</maps:Map.TileSources>
</maps:Map>
</Grid>

我的问题是我需要删除默认 map 层以隐藏标签(地铁站、街区名称等)。

我知道这可以通过 Windows Phone 8.1 的 MapTileLayer.BackgroundReplacement 属性(如状态 here )轻松完成,但我找不到有关 Windows Phone 8 的任何信息。

最佳答案

我自己尝试使用新的 WP8“Nokia HERE map ” map 控件进行此操作,但无法实现。我不得不求助于 Microsoft.Phone.Controls.Maps 中较旧的基于“Bing”的 map 控件(标记为已过时)。

以下是如何删除旧版 Microsoft.Phone.Controls.Maps 控件中的其他图层:

for (var i = Map.Children.Count - 1; i >= 0; i--)
{
MapTileLayer tileLayer = Map.Children[i] as MapTileLayer;
if (tileLayer != null)
{
Map.Children.RemoveAt(i);
}
}

即使这个较旧的 map 控件已在 WP8 中被取代,但较新的控件似乎不支持与图层相同的灵 active ,如果在您的应用程序中使用,“过时的”控件仍然可以在 WP8.1 下愉快地工作。

这是我的应用程序,它仍然使用较旧的控件,它可能正在实现您正在尝试做的事情 - NZ Topo Map app for Windows Phone

关于c# - map 控件 : Remove or hide default map layer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25875423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com