2016-09-09 105 views
2

我需要将自定义地图图块加载到我的UWP Bing Maps应用中,我需要从ApplicationData.Current.LocalFolder加载它们。Bing地图无法从本地应用数据加载图块

发生什么事是瓷砖没有加载和地图是完全黑色的。

在做一些故障排除时,我注意到应用程序包中的瓷砖加载得很好,问题仅与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

正如你所看到的,局部区块不加载和thy're纯黑色,而应用程序包内非常相同的文件是否正确装入。

有谁知道发生了什么事?

回答

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"; 

在这些方面,你应该能够从本地加载的瓷砖应用程序数据。

+0

感谢您的回复。我知道如何设置'UriFormatString',OP中的代码只是一个例子。真正的案例场景与构建自定义tile渲染器有关,所以我在UriRequested处理器中生成了tile,并将它们保存在缓存中以便稍后重新使用它们。如果我将它们保存到'LocalData'一切正常,但不应将它们添加到OneDrive备份中,这就是为什么我需要将它们保存到'LocalCache'中。 – StepTNT

+1

@StepTNT谢谢您的反馈,我们在内部记录了这个问题,相关团队正在调查它。 –

+0

@ FranklinChen-MSFT这个问题曾经修复过吗? – user1

0

对于您的情况,为什么不尝试使用CustoMapTileSource?您可以直接提供位图,而不是将图块写入缓存文件夹并将URI提供给LocalMapTileDataSource。