必应地图无法从本地应用程序数据加载瓦片

3

我需要将自定义地图瓦片加载到我的 UWP必应地图 应用程序中,并需要从 ApplicationData.Current.LocalFolder 加载它们。

问题是瓦片没有被加载,导致地图完全黑屏。

在进行故障排除时,我注意到来自应用程序包的瓦片被正确加载,而问题仅与 LocalFolderLocalCacheFoler 相关。

所以我做的事情是将相同的图像从应用程序包复制到本地文件夹中(我正在复制到正确的文件夹中,甚至测试了在 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();
};

以下是发生的情况:

enter image description here

如您所见,本地瓦片未加载,而且它们是纯黑色的,而同样的文件在应用程序包中可以正确加载。

有人知道发生了什么吗?

2个回答

3
感谢您的反馈。似乎在使用自定义源指向应用程序本地存储的 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";

通过这些方式,您应该能够从本地应用数据加载图块。

谢谢回复。我知道如何设置UriFormatString,OP中的代码只是一个例子。真正的情况是与构建自定义瓷砖渲染器有关,因此我在UriRequested处理程序中生成瓷砖并将它们保存在缓存中以便以后重用。如果我将它们保存到LocalData中,一切都很好,但它们不应该添加到OneDrive备份中,这就是为什么我需要将它们保存到LocalCache中的原因。 - StepTNT
1
@StepTNT 感谢您的反馈,我们已经在内部记录了这个问题,并且相关团队正在调查中。 - Franklin Chen - MSFT
@FranklinChen-MSFT 这个问题有被修复吗? - JKennedy

0
针对您的情况,为什么不尝试使用CustoMapTileSource呢?您可以直接提供位图,而无需将瓦片写入缓存文件夹并向LocalMapTileDataSource提供URI。

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