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"
我正尝试在我的应用程序中显示地图控件定位 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"