我用新的WP8“诺基亚HERE地图”的地图控件尝试这样做自己,但为无法实现这一点。我不得不求助于回退到Microsoft.Phone.Controls.Maps(标记为废弃)中基于旧的“Bing”的地图控件。
下面是如何删除其他层在旧Microsoft.Phone.Controls.Maps控制:
尽管这种旧的地图控件已经WP8被取代较新的控制似乎
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.1,那么图层和“过时”控件的相同灵活性仍然可以愉快地工作。
这里是我的应用程序仍然使用旧的控制,这可能是实现你想要做的 - NZ Topo Map app for Windows Phone。
砍倒的XAML在您的应用程序使用旧地图控件(你可能会希望忽略我的数据绑定和用自己取代他们):
<UserControl x:Class="TopoMap.Controls.Map"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:m="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
d:DesignHeight="480" d:DesignWidth="480"
DataContext="{Binding Main, Source={StaticResource Locator}}">
<Grid x:Name="LayoutRoot" Background="Transparent">
<m:Map x:Name="MapBase" LogoVisibility="Collapsed" ScaleVisibility="Visible"
Loaded="Map_Loaded"
LayoutUpdated="Map_LayoutUpdated"
ZoomLevel="{Binding ZoomLevel, Mode=TwoWay}"
Center="{Binding Center, Mode=TwoWay}">
</m:Map>
</Grid>
</UserControl>
,你需要它的重要的参考:
xmlns:m="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps"
的一点是,我使用的Visual Studio 2013的新安装了最新的工具和我不能在任何地方找到这个命名空间(Microsoft.Phone.Controls.Maps)看起来它已经被删除最新的工具。 – MakanWG
也许你正在开发WP8.1应用程序而不是WP8应用程序?您的标签陈述“windows-phone-8”。这两个平台在可用性方面存在很大差异。 – Gavin
我正在为Windows 8.0进行开发,并且正如我所想的那样,该控件在工具中不再可用,但我可以将其作为独立下载找到。如果有人需要,我会在原始问题中发布链接。 – MakanWG