我需要将自定义地图瓦片加载到我的 UWP必应地图 应用程序中,并需要从 ApplicationData.Current.LocalFolder
加载它们。
问题是瓦片没有被加载,导致地图完全黑屏。
在进行故障排除时,我注意到来自应用程序包的瓦片被正确加载,而问题仅与 LocalFolder
和 LocalCacheFoler
相关。
所以我做的事情是将相同的图像从应用程序包复制到本地文件夹中(我正在复制到正确的文件夹中,甚至测试了在 LocalFolder
存储的运行时生成的图像),并使用此代码作为瓦片源:
var localTileSource = new LocalMapTileDataSource();
localTileSource.UriRequested += async (s, e) =>
{
var deferral = e.Request.GetDeferral();
e.Request.Uri = (new Random().NextDouble() < 0.5) ? new Uri("ms-appdata:///local/background.png") : new Uri("ms-appx:///Assets/background.png");
deferral.Complete();
};
以下是发生的情况:
如您所见,本地瓦片未加载,而且它们是纯黑色的,而同样的文件在应用程序包中可以正确加载。
有人知道发生了什么吗?
UriFormatString
,OP中的代码只是一个例子。真正的情况是与构建自定义瓷砖渲染器有关,因此我在UriRequested
处理程序中生成瓷砖并将它们保存在缓存中以便以后重用。如果我将它们保存到LocalData
中,一切都很好,但它们不应该添加到OneDrive备份中,这就是为什么我需要将它们保存到LocalCache
中的原因。 - StepTNT