WP8 带有自定义图块的地图控件

WP8 Map control with custom tiles

我正尝试在我的应用程序中显示地图控件定位 Windows Phone 8,但我想使用开放街道地图中的自定义图块。

我正在使用这条线路:

mapControl.TileSources.Add(new TileSource("http://a.tile.openstreetmap.org/{zoomLevel}/{x}/{y}.png"));

当我启动应用程序时,自定义图块会正确显示,但它们下方仍然有默认地图图块。

我试图隐藏它们,但我什至找不到它们在地图控件中的位置以及显示它们的确切位置。

我想知道如何在加载自定义图块时删除这些默认图块。

我试图隐藏它们,但我什至找不到它们在地图控件中的位置以及显示它们的确切位置。

PS :如果您在最新的 WP 工具中找不到它,这里是 link 到 "old" bing 地图控件:http://www.microsoft.com/en-us/download/confirmation.aspx?id=2949

我自己用新的 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 中被取代,但较新的控件似乎不支持与图层相同的灵活性,如果在您的应用程序中使用 "obsolete" 控件,它仍然可以在 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"