如何在WP8版诺基亚地图中设置瓷砖源的不透明度?

11

我想利用Windows Phone 8 Nokia Maps API(Microsoft.Phone.Maps.Controls命名空间)的一些新功能。

我有一系列TileSource类,每个类都有不同的图像。我在地图上循环播放这些图像。

在Windows Phone 7中,我会创建多个Microsoft.Phone.Controls.Maps.MapTileLayer类,为每个添加一个TileSource,并将它们添加到地图中。然后,我使用计时器遍历这些层,将当前层的不透明度设置为1,其他层的不透明度设置为0。

enter image description here

在Windows Phone 8中,没有MapTileLayer类。我可以将所有的TileSource类添加到Map.TileSources集合中,但我不能改变它们的不透明度。

如果我一次只添加一个源,对于每一帧添加当前源并删除最后一个源,会出现相当严重的闪烁,因此这种方法行不通。

是否有类似于WP7的MapTileLayer或Bing Maps AJAX的TileLayer的类似类或其他方法可以更改Tile Sources的不透明度?


我无法尝试这个,但类似这样的代码可能有效:(map.Layers[0][0].Content as UIElement).Opacity = 1; 获取第一层的第一个叠加层并设置内容的不透明度... (map.Layers[1][0].Content as UIElement).Opacity = 1; 获取第二层的等等... - nemesv
谢谢您的建议,但是即使在我添加了瓦片源并等待它们加载完成后,map.Layers集合中仍然没有任何内容。 - msbg
Windows Phone 8不使用Bing Maps API,这是为Windows Phone 7设计的。对于Windows Phone 8,创建了一个新的控件/体验,使用的是Nokia地图而不是Bing。您仍然可以通过直接添加引用来在WP8应用程序中使用旧的Bing Maps控件。使用旧地图控件可能更容易。 - Shawn Kendrot
你尝试过使用System.Windows.Media.Brush类并设置所使用的画笔的不透明度吗?http://msdn.microsoft.com/en-us/library/windowsphone/develop/system.windows.media.brush%28v=vs.105%29.aspx - Paul Zahra
真的,我表达这个问题的方式不对,我改成了诺基亚地图。此外,我发现旧版本有点慢,缺少黑暗地图模式。 - msbg
1
要么没有人想要250声望,要么这根本不可能。如果是这样的话,那就太糟糕了... - msbg
1个回答

1
当前的API无法实现这一点。在过去的一年里,我从多个角度研究了这个问题。目前没有现成的解决方案。但是,有一个潜在的解决方法可以工作,但需要一些工作,可能不是理想的。您可以将瓦片存储在服务器上,并通过服务设置不透明度。基本上做类似于这样的事情:http://rbrundritt.wordpress.com/2009/11/27/bing-maps-custom-tile-skinner/,但更改不透明度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接