我需要将自定义地图图块加载到我的 UWP Bing Maps 应用中,我需要从ApplicationData.Current.LocalFolder
加载它们。
如果没有加载图块并且地图完全是黑色,会发生什么。
在进行一些问题排查时,我发现应用包中的图块已正确加载,但该问题仅与LocalFolder
和LocalCacheFoler
相关。
所以我做的是将相同的图像从app包复制到本地文件夹(我复制到正确的文件夹,甚至用在运行时生成的图像进行测试并存储在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();
};
这就是发生的事情:
正如您所看到的,当正确加载应用包内的相同文件时,本地磁贴未加载并且您的颜色为黑色。
有谁知道发生了什么?
答案 0 :(得分:2)
感谢您的反馈。在提供指向应用程序LocalMapTileDataSource的本地存储的自定义源时,似乎存在一些问题。我们已在内部报告此问题,一旦有任何进展,我会更新我的答案。
此外,LocalMapTileDataSource
可以从本地存储加载切片。我们可以在LocalMapTileDataSource
的构造函数中指定Uri,如下所示:
LocalMapTileDataSource localTileSource = new LocalMapTileDataSource("ms-appdata:///local/background.png");
或者设置 UriFormatString ,如:
LocalMapTileDataSource localTileSource = new LocalMapTileDataSource();
localTileSource.UriFormatString = "ms-appdata:///local/background.png";
通过这些方式,您应该能够从本地应用数据加载切片。
答案 1 :(得分:0)
对于您的方案,为什么不尝试使用CustoMapTileSource?您可以直接提供位图,而不是将切片写入缓存文件夹并将URI提供给LocalMapTileDataSource。