我用新的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