WP8 具有自定义磁贴的地图控件

本文关键字:地图 控件 自定义 WP8 | 更新日期: 2023-09-27 18:37:27

我正在尝试在面向 Windows Phone 8 的应用中显示地图控件,但我想使用来自开放街道地图的自定义磁贴。

我正在使用这一行:

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

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

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

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

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

PS :这是指向"旧"必应地图控件的链接,如果您在最新的WP工具中找不到它:http://www.microsoft.com/en-us/download/confirmation.aspx?id=2949

WP8 具有自定义磁贴的地图控件

我自己尝试过使用新的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 下仍然可以正常工作。

这是我的应用程序,它仍然使用较旧的控件,该控件可能正在实现您正在尝试执行的操作 - 适用于Windows Phone的NZ Topo Map应用程序。

减少 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"