C# 地图控件:删除或隐藏默认地图图层

C# 地图控件:删除或隐藏默认地图图层,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,在我的Windows Phone 8应用程序中,我使用自定义的TileSource,以便将默认地图背景与自定义的tile重叠,方法如下: C#: 公共类CustomTileSource:TileSource { 公共CustomTileSource() { UriFormat=”http://myurl/{0}/{1}/{2}.png”; } 公共覆盖Uri GetUri(int x,int y,int zoomLevel) { 如果(zoomLevel>0&&zoomLevel我自己用新的WP

在我的Windows Phone 8应用程序中,我使用自定义的
TileSource
,以便将默认地图背景与自定义的tile重叠,方法如下:

C#:

公共类CustomTileSource:TileSource
{
公共CustomTileSource()
{
UriFormat=”http://myurl/{0}/{1}/{2}.png”;
}
公共覆盖Uri GetUri(int x,int y,int zoomLevel)
{

如果(zoomLevel>0&&zoomLevel我自己用新的WP8“Nokia HERE maps”地图控件尝试了这一点,但未能实现。我不得不求助于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中已经取代了这个旧的map控件,但新的控件似乎不支持层的灵活性,“过时”控件在WP8.1中仍然可以很好地工作,如果在应用程序中使用的话

这是我的应用程序,它仍然使用旧控件,这可能实现了你想要做的事情-

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