我正在尝试在针对Windows Phone 8的应用中显示地图控件,但我想在开放街道地图中使用自定义图块。
我正在使用这一行:
mapControl.TileSources.Add(new TileSource("http://a.tile.openstreetmap.org/{zoomLevel}/{x}/{y}.png"));
当我启动应用程序时,自定义图块会正确显示,但它们下面仍然有默认的地图图块。
我试图隐藏它们,但我甚至没有找到地图控件中存在的位置以及它们的确切显示内容。
我想知道如何在加载自定义图块时删除这些默认图块。
我试图隐藏它们,但我甚至没有找到地图控件中存在的位置以及它们的确切显示内容。
PS:如果您在最新的WP Tools中找不到它,那么这里是“旧”bing地图控件的链接:http://www.microsoft.com/en-us/download/confirmation.aspx?id=2949
答案 0 :(得分:0)
我自己尝试使用新的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下使用。
这是我的应用程序,它仍然使用较旧的控件,可能会实现您正在尝试的操作 - 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"