在我的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
属性的Windows Phone 8.1(状态为here)轻松完成,但我找不到有关Windows Phone 8的任何信息。
答案 0 :(得分:1)
我自己尝试使用新的WP8&#34;诺基亚HERE地图&#34;地图控制,但无法实现这一点。我不得不求助于回到年龄较大的&#34; Bing&#34;基于Microsoft.Phone.Controls.Maps中的地图控件(标记为已废弃)。
以下是如何删除较旧的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中已经取代了旧的地图控件,但较新的控件似乎并不支持与图层相同的灵活性,并且过时的&#34;如果在您的应用程序中使用,控件仍然可以在WP8.1下运行。
这是我的应用仍然使用较旧的控件,这可能会实现您尝试做的事情 - NZ Topo Map app for Windows Phone。