Windows runtime 加速非常大的Bing地图基于多段线的图层

Windows runtime 加速非常大的Bing地图基于多段线的图层,windows-runtime,winrt-xaml,windows-8.1,windows-phone-8.1,bing-maps,Windows Runtime,Winrt Xaml,Windows 8.1,Windows Phone 8.1,Bing Maps,我正在为Windows Phone和Windows 8编写一个基于Bing地图的通用应用程序,其中显示了一些相当大的地图层 编写最初的应用程序没有问题(我遵循的教程是),但是我现在遇到了渲染一个包含数千条多段线和数万个坐标的层的主要问题 数据太大了-在Windows 8.1上,地图会使应用程序崩溃,而在Windows Phone 8.1上,图层渲染需要很长时间 根据,我应该通过将其转换为本地平铺层来加快速度,但是,文章(MapCruncher)中提到的程序需要PNG作为输入。问题是,如何将地图数

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

编写最初的应用程序没有问题(我遵循的教程是),但是我现在遇到了渲染一个包含数千条多段线和数万个坐标的层的主要问题

数据太大了-在Windows 8.1上,地图会使应用程序崩溃,而在Windows Phone 8.1上,图层渲染需要很长时间

根据,我应该通过将其转换为本地平铺层来加快速度,但是,文章(MapCruncher)中提到的程序需要PNG作为输入。问题是,如何将地图数据转换为PNG?我可以将数据作为shapefile、KML文件或CSV文件。我还有别的办法吗?我知道我可以通过Geoserver实现这一点,但是我的应用程序必须具有脱机支持,因此无法根据需要从web服务器下载适当的文件


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

如果您只在一个小区域中有数据,或者只想显示几个缩放级别的数据,本地平铺层就可以了。否则,瓷砖的数量会急剧增长,并将使你的应用程序变得巨大。如果数据定期更改,或者希望支持地图的所有缩放级别,则应将数据存储在服务器上,并将其作为动态平铺层公开。动态平铺层是一种web服务,它根据您的数据生成按需支付的款项。您可以为磁贴添加缓存以提高性能。这是处理大型数据集的最佳方法,也是我经常使用的方法。事实上,我这里有一个演示:这个数据集由175000个复杂多边形组成,相当于大约2GB的数据

我在这里有一篇关于如何做到这一点的老博文:

如果您喜欢使用MVC,您可能会发现以下项目很有用:


我以前解决过这个问题,方法是确保仅在多段线在地图上实际可见时(使用边界框)才向地图添加多段线,而不添加在当前缩放级别下很小的多段线。只需订阅地图的事件以检测视图中的更改,并相应地添加或删除多段线即可。@KrisVandermotten您有使用此方法的示例代码吗?不幸的是,没有,它适用于客户端,我不再有权访问源代码。但实际上这相当简单。只要找出地图的哪一部分在显示,无论是最初还是通过视图更改时的事件。然后删除不可见的多段线,并添加可见的多段线。在四叉树中组织多段线将提高性能,但我不确定这是否是必需的。不过,请提前计算并缓存它们的边界框。如果数据不变,您可以使用Mapbox studio(或其以前的版本)或任何平铺服务器以平铺图像的金字塔形式呈现数据。@rbrundritt感谢您提供的详细文章。我希望我不必去服务器端,但是您发布的代码对我理解平铺层是如何生成的非常有帮助。谢谢