Bing Maps控件导致手机冻结?

时间:2014-01-19 21:55:40

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

我在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 Maps控件,我不能使用WP8诺基亚地图控件。

该应用确实适用于我的Lumia 1520,这并不奇怪,因为它比其他两款快得多。

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

谢谢

1 个答案:

答案 0 :(得分:0)

我怀疑您的问题来源是正在发出的网络请求数量。通常使用1280x720分辨率的屏幕(Lumia 920具有此功能),每个图块层至少会有15个图块加载到视图中。每次将地图移动到新区域时,都会请求更多的图块。因此,如果您有6个图层,则可以轻松地一次请求和下载90个地图图块。如果您没有使用WIFI连接,您可能会发现加载很多瓷砖的速度非常慢。

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