加速一个非常大的Bing Maps基于折线的图层

时间:2014-09-27 09:54:49

标签: windows-runtime winrt-xaml windows-8.1 windows-phone-8.1 bing-maps

我正在为Windows Phone和Windows 8编写一个基于Bing Map的通用应用程序,它显示了一些相当大的地图图层。

编写初始应用程序没有问题(我所遵循的教程是http://blogs.msdn.com/b/rbrundritt/archive/2014/06/24/how-to-make-use-of-maps-in-universal-apps.aspx),但是我现在遇到的主要问题是渲染一个包含数千条折线的图层,其中包含数万个坐标。 / p>

数据太大 - 在Windows 8.1上,地图会使应用程序崩溃,而在Windows Phone 8.1上,该图层需要很长时间才能呈现。

根据http://blogs.msdn.com/b/bingdevcenter/archive/2014/04/23/visualize-large-complex-data-with-local-tile-layers-in-bing-maps-windows-store-apps-c.aspx,我应该通过将其转换为本地切片层来加快速度,但是,文章(MapCruncher)中提到的程序需要PNG作为输入。问题是,如何将我的地图数据转换为PNG?我可以将数据作为shapefile,KML文件或CSV文件。还有另一种方法我应该这样做吗?我知道我可以通过Geoserver执行此操作,但是我的应用程序必须具有脱机支持,因此无法根据需要从Web服务器下载相应的文件。

如果有人有其他方法我可以通过大图层来解决这个速度问题,那么我将非常感激。我知道我可以通过四叉树加速Bing地图中的图层渲染,但我发现的大多数都是理论上的。如果有人有一些我可以插入的代码,那将非常有帮助。

1 个答案:

答案 0 :(得分:1)

如果您只在一个小区域中拥有数据,或者只想显示几个缩放级别的数据,则可以使用局部切片图层。否则,瓷砖的数量会急剧增加,并会使您的应用程序变得庞大。如果您的数据定期更改,或者您希望支持地图的所有缩放级别,则应将数据存储在服务器上并将其作为动态切片图层显示。动态磁贴层是一种Web服务,可根据您的数据生成按需。您可以向磁贴添加缓存以提高性能。这是处理大型数据集的最佳方法,也是我经常使用的一种方法。事实上我在这里有一个演示:http://onsbingmapsdemo.cloudapp.net/这个数据集由175,000个复数多边形组成,相当于大约2GB的数据。

我有一篇关于如何在此处执行此操作的旧帖子:http://rbrundritt.wordpress.com/2009/11/26/dynamic-tile-layers-in-the-bing-maps-silverlight-control/

如果您更喜欢使用MVC,您可能会发现这些项目非常有用: https://ajaxmapdataconnector.codeplex.com/

https://dataconnector.codeplex.com/

相关问题