贴图控制:移除或隐藏默认贴图层
本文关键字:隐藏 默认 图层 控制 | 更新日期: 2023-09-27 18:22:09
在我的Windows Phone 8应用程序中,我使用自定义TileSource
来将默认地图背景与自定义磁贴重叠,如下所示:
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>
我的问题是,我需要删除默认的地图图层来隐藏标签(地下车站、社区名称等)。
我知道使用具有MapTileLayer.BackgroundReplacement
属性的Windows Phone 8.1可以很容易地做到这一点(如此处所示),但我找不到任何有关Windows Phone 8的信息。
我自己用新的WP8"诺基亚HERE地图"地图控件尝试过这一点,但无法实现。我不得不回到Microsoft.Phone.Controls.Maps中旧的基于"Bing"的地图控件(标记为过时)。
以下是如何删除旧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);
}
}
尽管这个旧的地图控件在WP8中已经被取代,但新的控件似乎不支持相同的层灵活性,如果在您的应用程序中使用,"过时"的控件在WP8.1下仍然可以很好地工作。
这是我的应用程序,它仍然使用旧的控件,可能正在实现你想要做的事情-适用于Windows Phone的NZ Topo Map应用程序。