【问题标题】:Speeding up a very large Bing Maps polyline based layer加速一个非常大的 Bing Maps 基于折线的图层
【发布时间】:2014-09-28 03:30:06
【问题描述】:

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

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

数据太大 - 在 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 地图中图层的渲染速度,但是我发现的大部分内容都是理论上的。如果有人有一些我可以插入的代码,那将非常有帮助。

【问题讨论】:

  • 我之前解决了这个问题,确保我只在地图上实际可见的情况下向地图添加折线(使用边界框),而不是添加太小而无法注意到的折线当前缩放级别。只需订阅地图的事件以检测视图中的变化,并相应地添加或删除折线。
  • @KrisVandermotten 你有使用这种方法的示例代码吗?
  • 不幸的是,它是为客户工作的,我无法再访问源代码了。但实际上它相当简单。只需找出地图的哪一部分正在显示,无论是最初还是通过视图更改时的事件。比删除不可见的折线,并添加可见的折线。在四叉树中组织你的折线会提高性能,但我不确定它是否需要。不过,请预先计算和缓存它们的边界框。

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


【解决方案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/

【讨论】:

  • 如果数据没有变化,您可以使用 Mapbox studio(或他们以前的版本)或任何瓦片服务器在瓦片图像金字塔中呈现数据。
  • @rbrundritt 感谢您的详细帖子。我希望我不必去服务器端,但是您发布的代码对我了解如何生成切片图层非常有帮助。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 2011-08-25
  • 2021-04-13
  • 1970-01-01
  • 2016-04-23
相关资源
最近更新 更多