【问题标题】:Bing Maps not loading tiles from local app data必应地图未从本地应用程序数据加载图块
【发布时间】:2016-09-09 21:37:38
【问题描述】:

我需要将自定义地图图块加载到我的 UWP Bing 地图 应用中,并且我需要从 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();
};

这就是发生的事情:

如您所见,本地图块未加载,并且您是纯黑色的,而应用程序包中的相同文件已正确加载。

有人知道怎么回事吗?

【问题讨论】:

    标签: win-universal-app uwp bing-maps uwp-maps


    【解决方案1】:

    感谢您的反馈。在为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 感谢您的反馈,我们已在内部记录此问题,相关团队正在调查。
    • @FranklinChen-MSFT 这个问题曾经修复过吗?
    【解决方案2】:

    对于您的方案,为什么不尝试使用 CustoMapTileSource?无需将切片写入缓存文件夹并将 URI 提供给 LocalMapTileDataSource,您可以直接提供位图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多