【问题标题】:Bing Maps control causes phone to freeze?必应地图控制导致手机死机?
【发布时间】:2014-01-19 21:55:39
【问题描述】:

我在我的 Windows Phone 8 应用程序页面的 XAML 中创建了一个 Bing 地图控件 (Microsoft.Phone.Controls.Maps.Map)。

<maps:Map x:Name="map" CredentialsProvider="..." MapResolved="map_MapResolved"   ViewChangeStart="map_ViewChangeStart">
</maps:Map>

我总共向地图添加了六个MapTileLayer 类。所有这些层都会导致地图的运行速度比正常情况稍慢,但并非不可接受。

当我在三部手机中的两部(诺基亚 Lumia 920、诺基亚 Lumia 1020)上运行该应用程序时,它可以正常运行大约半分钟。然后,整个手机冻结,必须强制重启。如果我减少我在地图上使用的层数,这个问题的频率就会降低。但是,我必须有六层。我还必须使用 WP7 Bing 地图控件,我不能使用 WP8 诺基亚地图控件。

该应用在我的 Lumia 1520 上运行,这并不奇怪,因为它比其他两个快得多。

关于可能导致此问题的任何想法或我可以确定原因吗?

谢谢

【问题讨论】:

  • 为什么不使用 MAP API 而不是 BING MAPS " Windows Phone 8 仍支持 Bing 地图控件,但已弃用。通常,您应该使用 Bing 地图控件的唯一时间是在您已从 Windows Phone OS 7.1 升级到 Windows Phone 8 的现有应用程序。” MSDN 文档说..
  • 因为 Nokia Maps API for Windows Phone 8 不支持 MapTileLayers。

标签: c# windows-phone-8 windows-phone bing-maps


【解决方案1】:

我怀疑您的问题的根源是发出的网络请求的数量。通常使用 1280x720 分辨率的屏幕(Lumia 920 有这个),每个图块层将至少有 15 个图块加载到视图中。每次将地图移动到新区域时,都会请求更多图块。因此,如果您有 6 个图层,这很容易一次请求和下载 90 个地图图块。如果您没有使用 WIFI 连接,您可能会发现加载这么多图块真的很慢。

一个可能会大大加快速度的可能解决方案是创建一个代理服务,将图层中的图块组合到一个图块中。因此,如果有人请求平铺 abc,则不同层的所有平铺首先加载到服务中并合并为单个图像并返回到设备。您可以使用 C# 中的通用处理程序和 .NET 绘图工具轻松完成此操作。这是一篇与此类似的博文:http://rbrundritt.wordpress.com/2009/11/27/bing-maps-custom-tile-skinner/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 2012-08-25
    • 1970-01-01
    • 2019-09-26
    相关资源
    最近更新 更多