在我的Windows Phone 8应用程序中,为了使默认地图背景与自定义图块重叠,我使用了自定义TileSource
:
C#:
public class CustomTileSource : TileSource
{
public CustomTileSource()
{
UriFormat ="http://myurl/{0}/{1}/{2}.png";
}
public override Uri GetUri(int x, int y, int zoomLevel)
{
if (zoomLevel > 0 && zoomLevel <= 18)
{
var url = string.Format(UriFormat, zoomLevel, x, y);
return new Uri(url);
}
//if zoom level is not supported, return null
return null;
}
}
XAML:
...
xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
xmlns:tileSource="clr-namespace:Mappa"
...
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<maps:Map x:Name="Map" Center="45,9" ZoomLevel="14">
<maps:Map.TileSources>
<tileSource:CustomTileSource />
</maps:Map.TileSources>
</maps:Map>
</Grid>
我的问题是我需要删除默认的地图图层才能隐藏标签(地下车站,社区名称等)。
我知道使用带
MapTileLayer.BackgroundReplacement
属性(状态为here的Windows Phone 8.1)可以很容易地做到这一点,但是我找不到有关Windows Phone 8的任何信息。 最佳答案
我自己使用新的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。